
Man muss Zeilen aus einer TXT-Datei in andere Dateien extrahieren, basierend auf dem folgenden Szenario:
Das erste abzugleichende Muster ist immer die Zeile, die mit dem Wort beginnt identifier
, das zweite Muster ist dann die erste Zeile, die mit beginnt 000
:
im folgenden Beispiel wird es sein
000: thislineneedstobeextracted
nachdem wir die Ausgabe in die erste Datei geschrieben haben, extrahieren wir die Zeilen, die mit dem Wort beginnen identifier
, und die Zeilen, die erneut mit 000
: beginnen, diesmal jedoch für das zweite eindeutige Vorkommen in der Datei. In unserem Beispiel gilt:
000: alsothislineneedstobeextracted
und die Ausgabe wird in die zweite Datei geschrieben usw.
Beispieleingabe
identifier 767
linetobeignored
anotherlinetobeignored
000: thislineneedstobeextracted
000: alsothislineneedstobeextracted
blankline
identifier 7686
linetobeignored
anotherlinetobeignored
000: thislineneedstobeextracted
000: alsothislineneedstobeextracted
000: ayetanotherlineneedstobeextracted
Beispielausgabedatei1.txt:
000: thislineneedstobeextracted
identifier 767
identifier 7686
Beispielausgabedatei2.txt:
000: alsothislineneedstobeextracted
identifier 767
identifier 7686
Antwort1
Versuche es mitawk
awk '
/^id/{
if(line[1]){
for(n in line)print line[n],i,$0 >> "file"n".txt"
delete(line)
}
c=0
i=$0
}
/^000:/{
line[++c]=$0
}
END{
if(line[1]){
for(n in line)print line[n],i,$0 >> "file"n".txt"
}
' OFS=\\n txt.file