2013-10-03 17 views
5

Poszukuję kodu regex z listą wszystkich wierszy LUB i. tryed to:regex dla jednej lub innej postaci?

grep -E '[(a|i)]{1}' testFile.txt 

ale to daje mi słów zawierających lub I i słowa, które zawierają pl ja. Co jest nie tak?

+0

co jeśli spróbujesz * (a | i) * – Darka

+3

Dla przypomnienia, wyrażenie regularne dla "a lub i (lub obu)" jest po prostu '[ai]' - "grep" zgłosi mecz w dowolnym miejscu na linii, więc nie potrzebujesz wiodących lub kończących znaków wieloznacznych. – tripleee

+0

Jeśli w linii nie może być nic więcej, 'grep '^ [ai] $' file' lub' grep -Fx -e a -e i file'. – tripleee

Odpowiedz

2

Można to osiągnąć w:..

grep -E "^[^ai]*(a|i){1}[^ai]*$" testFile.txt 
+0

Problem polega na tym, że daje mi to spokojną, dużą, czarną przestrzeń. – user2810895

+0

Czy możesz podać próbkę, jeśli nie działa poprawnie? Przetestowałem plik [this] (http://pastebin.com/Wkegi3Me), działa dobrze –

+0

Plik zawiera greckie litery. Wyrażenie powinno pokazywać na przykład: beta, ale NIE może wyświetlać na przykład iota, ponieważ to słowo zawiera zarówno i, jak i – user2810895

0

Jeśli chcesz ekskluzywny LUB następnie spróbuj tego: grep -E '^[^i]*a[^i]*$|^[^a]*i[^a]*$'

Powiązane problemy