Angenommen, ich habe diese 857835-Zeilendatei, die Folgendes enthält:
a1
rubbish1
rubbish2
rubbish3
rubbish4
a1
rubbish5
rubbish6
rubbish7
rubbish8
Und ich möchte alle Vorkommen von a1
und der nächsten Zeile ( rubbish1
und rubbish5
in diesem Beispiel) entfernen . Wie mache ich es?
Ich habe erfolglos versucht grep 'a1' -v -A1
, und meine Fähigkeiten sind nicht wirklich großartig:}
Mein Google-Fu konnte mir diesmal nicht helfen, jemand bitte helfen!
grep
text-processing
sed
Rayfoo
quelle
quelle
^
und$
in diesem Spiel, passende ganze Zeilen zu erzwingen.Folgendes funktioniert bei Nicht-GNU
sed
(die,+1
Adressensyntax ist eine GNU-Erweiterung):"Beginnend mit einer Zeile, die genau 'a1' lautet, und endend mit der nächsten Zeile, für die der Zeilenanfang existiert (dh die nächste Zeile), löschen Sie."
Es ist jedoch viel weniger erweiterbar als die Antwort von @ asoundmove, da das Löschen einer anderen Anzahl von Zeilen ein völlig anderes Skript erfordern würde.
quelle