2012-11-04 24 views
16

ile eşleştirmek için nasıl kullanılır? Bir sözcüğü bir sözcükle greplemek istiyorum, "AAA" deyin ve boşluk veya satır sonu ile biter. Bunu aşağıdaki gibi ayrı ayrı yazmayı biliyorum, ancak bunları birleştirirken problemlerim var (hem VVV AAA hem de AAA VVV çıktıları).grep'i, boşluk veya newline

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

Ben [] kullanarak denedi, ancak başarılı olamadı ..

cevap

18

her yerde dizede boşluk ve ardından kelimenin AAA arıyorsanız, ya satırın sonundaki sonra kullanmak

grep -P "AAA(|$)" 
2

Ayrıca AAA ile eşleşen başka bir alfasayısal olmayan karakterle eşleşmesi kabul edilebilirse, "AAA\b" kullanın. grep man pages'a göre, \b, bir sözcüğün kenarındaki boş dizeyle eşleşir. grep adamdan

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

:

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

' AAA-BBB' –

+0

Teşekkürler, haklısınız. Cevabımı güncelliyorum. –

9

Birçok desenleri seçmek için grep'in -e seçeneğini kullanabilirsiniz b` da eşleşir \ gibi girer `kullanılması

-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.) 
İlgili konular