Ich möchte alle Zeilen von der Datei bis zum Übereinstimmungswort drucken. Bitte geben Sie an, wie das mit awk geht
zum Beispiel
Ich möchte alle Zeilen bis zum Wort PPP drucken
Beachten Sie, dass die erste Zeile von AAA abweichen sollte (jedes Wort).
cat file.txt
AAA ( the first line/word chuld be any word !!!!! )
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
MMM
(((
&&&
Also muss ich das bekommen
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
anderes Beispiel (möchte bis KJGFGHJ drucken)
cat file.txt1
HG
KJGFGHJ
KKKK
also muss ich bekommen
HG
KJGFGHJ
sed
:sed '/PPP/q' infile
awk
, also gebe ich anderen keine Tools.1
ist wie{print $0}
. Beachten Sie auch, dass//
es sich um ein leeres Muster handelt und das Ergebnis nicht angegeben ist. Es ist Arbeit ingawk
,mawk
, Brian Kernighan eigene Version aber nicht innawk
,oawk
von Erbstück Tools Brust.Alternativ können Sie ein Bereichsmuster verwenden, das mit der ersten Zeile (NR gleich 1) bis zur ersten Übereinstimmung von 'PPP' in einer Zeile übereinstimmt
Wenn die Linie genau mit 'PPP' übereinstimmen muss, verwenden Sie nur
Wenn Sie dasselbe für jede Datei in der Argumentliste tun möchten, verwenden Sie die FNR-Variable, die für die erste Zeile jeder verarbeiteten Datei auf 1 zurückgesetzt wird
quelle
Wie OP sagte, kann seine erste Zeile oder sein erstes Wort der Datei ein beliebiges Wort enthalten (wie sich
PPP
selbst). Sie müssen dies also überprüfen und die erste Zeile vom Abgleich abhalten und vermeidenawk
, dass sie dort beendet wird.Dann können Sie dies versuchen:
Eingabedatei:
Befehl:
Ausgabe:
quelle