2013-10-03 14 views
5

Ich suche nach einem Regex-Code, der alle Zeilen auflistet, die ein OR oder ein i enthalten. Ich habe versucht dies:regex für den einen oder anderen Charakter?

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

aber das gibt mir die Worte a oder i und Wörter enthält, die ein en i enthalten. Was ist los?

+0

was ist, wenn Sie versuchen, * (a | i) * – Darka

+3

Für das Protokoll, Die Regex für "a oder i (oder beide)" ist einfach "[ai]" - "grep" meldet eine Übereinstimmung irgendwo in einer Zeile, so dass Sie keine führenden oder nachfolgenden Platzhalter benötigen. – tripleee

+0

Wenn es nichts anderes in der Zeile geben kann, 'grep '^ [ai] $' file' oder' grep -Fx -e a -e i file'. – tripleee

Antwort

2

Sie können das erreichen mit:..

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

Das Problem ist, dass dies gibt mir einen ruhigen großen schwarzen Raum. – user2810895

+0

Können Sie ein Beispiel bereitstellen, wenn es nicht ordnungsgemäß funktioniert? Ich habe auf [dieser] (http://pastebin.com/Wkegi3Me) Datei getestet, funktioniert gut –

+0

Die Datei enthält griechische Buchstaben. Die Regex sollte zum Beispiel zeigen: beta, aber es kann nicht zeigen, zum Beispiel Iota, weil dieses Wort enthält sowohl ein i und ein – user2810895

0

Wenn Sie eine exklusive wollen OR dann versuchen, diese: grep -E '^[^i]*a[^i]*$|^[^a]*i[^a]*$'

Verwandte Themen