Awk 搜索图案和打印图案

Awk 搜索图案和打印图案,awk,sed,grep,find,ksh,Awk,Sed,Grep,Find,Ksh,我想搜索一个图案,然后打印该图案。我发现grep-o是最好的选择,但我没有这个选择。我可以使用sed、grep或awk 输出:查找:无法chdir到:权限被拒绝 我想匹配模式“/home/test”并返回“/home/test/.ssh”,忽略行的其余部分 我试过: find /home/test 2>&1 | sed -n '/\/home\/test\/.ssh/ s/.*\(\/home\/test\/.ssh\).*/\1/p' 但这将用/home/test替换所有匹配项

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

输出:查找:无法chdir到
:权限被拒绝

我想匹配模式“/home/test”并返回“/home/test/.ssh”,忽略行的其余部分

我试过:

find /home/test 2>&1 | sed -n '/\/home\/test\/.ssh/ s/.*\(\/home\/test\/.ssh\).*/\1/p'
但这将用/home/test替换所有匹配项


任何帮助都将不胜感激

使用
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/home/test2>&11>/dev/null | perl-ne'print m,,'

(假设您从
find
输出的路径位于

为什么不干脆
find/home/test-name'.ssh'
?@Sobrique我正在尝试解释stderr。我认为这不管用,因为我想在/home/test中找到所有内容。如果输出包含我上面的输出示例,我只想打印路径。那么,您尝试输出的内容的示例将是一个好主意。@Sobrique抱歉,我现在编辑了这篇文章。您应该能够看到find命令的输出。基本上,如果find返回一个错误,我想提取它无法访问的路径。啊,现在这有点不同了!一定要找到吗?那太好了!是否有办法将输出分成新行而不是单行?是的
perl-ne'print m,,“\n”'