Ich habe eine Datei in Perl, die folgenden Inhalt hat
abc
text1
text2
text3
abc
text4
text5
abc
abc
Endgültige Ausgabe:
abc
text1
text2
text3
text4
text5
Ich möchte einen Perl-One-Liner oder ein Skript verwenden, um das 1. ABC zu behalten und den Rest zu löschen. In meinem Skript verwende ich den Mustervergleichsoperator m?/abc/
das erste Muster finden, aber keinen Weg finden, den Rest zu löschen. Bitte hilf mir dabei
Antworten:
3 für die Antwort № 1Angenommen, Sie möchten die gesamte Zeile löschen, die das zweite und nachfolgende Vorkommen von enthält abc
:
perl -ne "print if !/abc/ || !$n++" < infile > outfile
Wenn Sie Zeilen löschen möchten, die enthalten abc
und sonst nichts, Veränderung /abc/
zu /^abc$/
.