2012-04-17 77 views
21

Ich versuche automatisch alle Zeilen aus einer Textdatei zu entfernen, die einen Buchstaben "T" enthält, auf den nicht sofort ein "H" folgt. Ich habe Grep benutzt und die Ausgabe in eine andere Datei geschickt, aber ich kann mir nicht den magischen Regex vorstellen, der mir dabei helfen wird.Grep Regex: Liste alle Zeilen außer

Ich habe nichts dagegen, awk, sed oder ein anderes Linux-Tool zu verwenden, wenn grep nicht das richtige Werkzeug ist.

Antwort

51

Das sollte es tun:

grep -v 'T[^H]' 

-v: Druckzeilen passend nicht

[^ H.]: Jedes Zeichen aber H

+2

Beide Instanzen von '*' sind nicht erforderlich , wie grep scannt die gesamten Zeilen auf der Suche nach einem Spiel –

+0

Vielen Dank für die Bemerkung.Bearbeitet, um dies zu reflektieren. – byrondrossos

9

können Sie tun:

grep -v 'T[^H]' input 

-v ist die inverse Spiel Möglichkeit, grep es nicht die Zeilen auflistet, die dem Muster entsprechen.

Die verwendete Regex ist T[^H], die mit allen Zeilen übereinstimmt, die als T gefolgt von einem anderen Zeichen als einem H.

Verwandte Themen