搜索图案和打印图案

问题描述:

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

输出:发现:无法CHDIR到</home/test/.ssh>:权限被拒绝

我想匹配模式“/家/测试”按钮,返回“/home/test/.ssh”,并忽略该行的其余部分。

我已经试过:

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

但这种替换所有比赛用的/ home /测试

任何帮助,将不胜感激。

+0

为什么不只是'find/home/test -name'.ssh''? – Sobrique

+0

@Sobrique我试图说明stderr。我不认为这会起作用,因为我想在/ home/test中找到所有内容。如果输出包含我上面的输出示例,我只想打印路径。 – Gautam

+0

然后,你试图输出的例子将是一个好主意。 – Sobrique

随着find打印一个错误的“你不能访问的东西”这是一个稍微不同的情况。当发生这种情况时,find打印到“STDERR”。所以你可以:

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

这将只打印你打你找到的错误。如果您还需要“清理” Permission denied错误,如果grep -o是你以后,你也许可以做到这一点在perl

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

(假设从find您的输出在<>路径)

+0

这很好!无论如何将输出分成新线而不是单线排队? – Gautam

+0

是的。 'perl -ne'print m,,,“\ n”'' – Sobrique