2012-11-04 70 views
16

我想用一個單詞grep一個文件,比如說「AAA」,它以空白或換行符結尾。我知道如何單獨編寫它,如下所示,但在組合它們時存在問題(從輸出VVV AAAAAA VVV的意義上說)。如何使用grep來匹配空白或換行

$echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA$" 
>VVV AAA 
$echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA[[:space:]]" 
>AAA VVV 

我一直在使用[]嘗試過,但都沒有成功..

回答

18

如果您在string中任何地方尋找,隨後空間字AAA,或行的結尾,然後用

grep -P "AAA(|$)" 
2

使用"AAA\b"如果還可以匹配AAA,然後再匹配任何其他非字母數字字符。根據grep man pages\b匹配單詞邊緣的空字符串。

$ echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA\b" 
AAA VVV 
VVV AAA 
+2

使用'\ B'也將匹配輸入,如' AAA-BBB' –

+0

謝謝,你是對的。我正在更新我的答案。 –

9

您可以使用grep的-e選項選擇多款:

grep -e "AAA$" -e "AAA[[:space:]]" 

從grep的人:

-e PATTERN, --regexp=PATTERN 
     Use PATTERN as the pattern. This can be used to specify 
     multiple search patterns, or to protect a pattern beginning with 
     a hyphen (-). (-e is specified by POSIX.)