搜索图案和打印图案

时间:2016-02-29 19:53:32

标签: awk sed grep find ksh

我想搜索一个模式,然后打印该模式。我发现grep -o将是最好的选择,但我没有那个可用。我可以使用sed,grep或awk。

输出:找不到chdir到</home/test/.ssh>:权限被拒绝

我想匹配模式&#34; / home / test&#34;并返回&#34; /home/test/.ssh"并忽略其余部分。

我试过了:

find /home/test 2>&1 | sed -n '/\/home\/test\/.ssh/ s/.*\(\/home\/test\/.ssh\).*/\1/p'

但是这会用/ home / test

替换所有匹配项

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

find打印“您无法访问的内容”的错误,这种情况略有不同。当发生这种情况时,find会打印到“STDERR”。所以你可以:

find /home/test 2>&1 1>/dev/null 

这只会打印您在查找中遇到的错误。如果您仍然需要“清理”权限被拒绝错误,如果grep -o是您所追求的,您可以在perl中执行此操作:

 find /home/test 2>&1 1>/dev/null | perl -ne 'print m,<(.*)>,' 

(假设find的输出中的路径为<>