2012-10-05 62 views
0

如果我有以下內容的bash的文件:grep的輸出模式

ls \ 
/tmp 

有沒有辦法到grep這個文件並獲得

ls \ 
/tmp 

代替

ls \ 

請注意,如果輸入是一個大文件並且具有其他匹配模式,grep的其他行爲應保持不變。

謝謝!

+0

你的問題對我來說有點含糊,你可以發表你當前使用的grep命令嗎? – Tobrun

回答

1

假設你想治療最終\作爲續行字符,你可以使用awk以連接線:

awk '{ while(sub("\\\\$", "")) { getline n; $0 = $0 n; }} /ls/' input-file 

這消除了續行茶將所有內容組合成一行,然後打印該行,如果匹配正則表達式ls

+0

這太棒了!如果我想添加\返回,這很難嗎? – echo

+0

可能最簡單的方法是首先不要刪除它。改用'awk'{while(/ \\ $ /)...'。 –

1

可以使用背景選項,-A(行之後),-B(行之前),和-C(線方面,之前和之後):

$ grep -A1 ls test.sh 
ls \ 
/tmp 
+0

+1爲答案。你不應該使用'-A1'而不是'-C1'來匹配OP想要的內容。 – mtariq

+0

感謝您的建議;修正。 – nneonneo

+0

感謝您的回答。如果bash文件包含: ls \ /var \ /tmp – echo