如何在 Bash 中的分隔符 ` 上拆分字符串?
How do I split a string on a delimiter ` in Bash?
如何通过管道仅在以下管道上获得 modules/bx/motif
?
$ find . | grep denied
find: `modules/bx/motif': Permission denied
你可以重定向 STDOUT(你想要的错误出现的地方),这样你就可以用其他工具处理它,然后扔掉 STDIN(其中包含你不关心的 non-errors)然后使用 cut
(或其他一百种方法中的任何一种)来提取您需要的位:
find . 2>&1 >/dev/null | cut -d"‘" -f2 | cut -d"’" -f1
您也可以使用 built-in find
过滤器之一(例如 -perm
)来挑选这些文件,但您必须检查 find
q 手册页了解详细信息。
find . -not -readable
可能对您有所帮助。
就是这样,使用sed
:
find . 2>&1 | sed 's/^[^:]*: .\(.*\).: Permission denied//p;d'
或仅使用 bash,
你的问题代表 bash:
string=$'find: `modules/bx/motif7: Permission denied'
echo $string
find: `modules/bx/motif': Permission denied
part=${string#*\`}
echo ${part%\'*}
modules/bx/motif
如何通过管道仅在以下管道上获得 modules/bx/motif
?
$ find . | grep denied
find: `modules/bx/motif': Permission denied
你可以重定向 STDOUT(你想要的错误出现的地方),这样你就可以用其他工具处理它,然后扔掉 STDIN(其中包含你不关心的 non-errors)然后使用 cut
(或其他一百种方法中的任何一种)来提取您需要的位:
find . 2>&1 >/dev/null | cut -d"‘" -f2 | cut -d"’" -f1
您也可以使用 built-in find
过滤器之一(例如 -perm
)来挑选这些文件,但您必须检查 find
q 手册页了解详细信息。
find . -not -readable
可能对您有所帮助。
就是这样,使用sed
:
find . 2>&1 | sed 's/^[^:]*: .\(.*\).: Permission denied//p;d'
或仅使用 bash,
你的问题代表 bash:
string=$'find: `modules/bx/motif7: Permission denied'
echo $string
find: `modules/bx/motif': Permission denied
part=${string#*\`}
echo ${part%\'*}
modules/bx/motif