Zeilen aus einer Textdatei extrahieren, Muster werden durch Parsen der Datei identifiziert

Zeilen aus einer Textdatei extrahieren, Muster werden durch Parsen der Datei identifiziert

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

verwandte Informationen