2016-02-29 92 views
0

我想搜索圖案,然後打印該圖案。我發現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

回答

0

隨着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