Wie kann ich den Rest der Datei für alle Dateien aus der Zeichenfolge entfernen?
Beispielsweise sind Eingabedateien 1
und 2
Zeichenfolge ddd
.
Eingabedatei 1
.
aaa
bbb
ccc
ddfbbd dddaaa
eee
Ausgabedatei 1
.
aaa
bbb
ccc
ddfbbd
Eingabedatei 2
.
ccc
aergddd
dasdvsdb
Ausgabedatei 2
.
ccc
aerg
text-processing
sed
genderbee
quelle
quelle
d
anstelle vonq
Mit Perl:
oder
-i
: Ändern Sie die Datei an Ort und Stelle.-0777
: Perl zwingen, die Datei als Ganzes zu schlürfen, nicht Zeile für Zeile.-pe
::-p
: Perl-Code schleifen.-e
: Perl-Code ausführen.'s/ddd[\s\S]*//'
: Ersetzen Sie alles (jedes Leerzeichen (\s
) und jedes Nicht-Leerzeichen (\S
)) nachddd
(einschließlich) durch eine leere Zeichenfolge.'s/ddd.*//s'
: Ersetzen Sie alles (.*
) nachddd
(einschließlich) durch eine leere Zeichenfolge. Dies
Flagge am Ende.*
passt auch zu den Zeilenumbrüchen (danke @glennjackman).Mehr über Perl-Flags finden Sie hier .
quelle
s/ddd.*//
?.*
hört bei newline auf zu passen..*
Wenn Sie dem Befehl das Flagm
oder hinzufügen (ich vergesse welches)s
s///
s
Flagge. Vielen Dank!Mit GNU
awk
können wir Folgendes tun:an Ort und Stelle zu ändern, was den Befehl noch einfacher macht:
quelle