2016-09-17 2 views
1

Ich bin mit dieser Datei von Daten arbeiten, die wie folgt aussieht:alle Zeilen, die Sie nicht Matched Contain String

text in file 
hello random text in file 
example text in file 
words in file hello 
more words in file 
hello text in file can be 
more text in file 

Ich versuche, alle Zeilen zu ersetzen, die tun nicht die Zeichenfolge enthalten hello mit match mit sed, so wäre die Ausgabe:

match 
hello random text in file 
match 
words in file hello 
match 
hello text in file can be 
match 

habe ich versucht, mit sed '/hello/!d' aber das löscht die Linie. Außerdem lese ich, dass ich unter Verwendung ! in sed übereinstimmen kann, aber ich bin nicht sicher, wie man jede Linie zusammenbringt und richtig ersetzt. Wenn Sie mir eine Richtung geben könnten, würde ich es sehr schätzen.

Antwort

3

Sie können es wie folgt tun:

$ sed '/hello/!s/.*/match/' infile 
match 
hello random text in file 
match 
words in file hello 
match 
hello text in file can be 
match 

/hello/! stellt sicher, nur wir ersetzen auf den Leitungen nicht hello enthält (Sie hatte das Recht), und die Substitution ersetzt dann die komplette Musterraum (.*) mit match.

+0

Das funktioniert perfekt. Danke, dass Sie mir geholfen haben. Das macht Sinn. Bitte upvote, wenn Sie eine Minute bekommen. – DomainsFeatured

6

awk zur Rettung!

Ersetzen Sie die Zeilen, die nicht mit "Hallo" übereinstimmen, mit "Übereinstimmung" und drucken Sie alle Zeilen.

+0

Hey Karakfa, ist das gut, ist aber andere Linien zusätzlich entfernt um die Linie zu ersetzen. – DomainsFeatured

+0

sollte es nicht, "1" ist da, um alle Zeilen zu drucken. – karakfa

+0

Ah, Sie haben Recht. Vielen Dank. Ich bin nicht gut mit Awk, aber das funktioniert gut. – DomainsFeatured

0

Verwenden Sie einfach awk für Klarheit, Einfachheit, etc .:

awk '{print (/hello/ ? $0 : "match")}' file 
3

Sed mit dem c (ändern) Befehl:

$ sed '/hello/!c match' file 
match 
hello random text in file 
match 
words in file hello 
match 
hello text in file can be 
match 
Verwandte Themen