2012-11-04 5 views
16

"AAA"という単語でファイルをgrepしたい場合は、空白または改行で終わります。私はこれを次のように別々に書く方法を知っていますが、それらを組み合わせる際に問題があります(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

は、あなたがどこかの文字列にスペースが続く単語AAAを探している場合、または行の最後に、その後、使用

grep -P "AAA(|$)" 
2

"AAA\b"を使用すると、AAAに続いて他の英数字以外の文字も使用できます。 grep man pagesによれば、\bは単語の端にある空文字列と一致します。 grepの男から

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

:あなたは多くのパターンを選択するためのgrepの-eオプションを使用することができます

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

合っているでしょうが、そのような'として入力AAA-BBB' –

+0

ありがとうございます。私は私の答えを更新しています。 –

9

`\のB`を使用して

-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.) 
関連する問題