テキストファイルから行を抽出し、ファイルを解析してパターンを識別します。

テキストファイルから行を抽出し、ファイルを解析してパターンを識別します。

次のシナリオに基づいて、txt ファイルから他のファイルに行を抽出する必要があります。

最初に一致するパターンは常に という単語で始まる行になりidentifier、2 番目のパターンは で始まる最初の行になります000

下の例では、

000: thislineneedstobeextracted  

identifier最初のファイルに出力を書き込んだ後、単語 で始まる行と、再び : で始まる行を抽出します000。ただし、今回は、ファイル内で見つかった 2 番目の一意の出現についてです。この例では、

000: alsothislineneedstobeextracted  

出力は 2 番目のファイルに書き込まれます。

サンプル入力

identifier 767  
linetobeignored  
anotherlinetobeignored  
000: thislineneedstobeextracted  
000: alsothislineneedstobeextracted  
blankline  
identifier 7686    
linetobeignored  
anotherlinetobeignored  
000: thislineneedstobeextracted  
000: alsothislineneedstobeextracted  
000: ayetanotherlineneedstobeextracted  

サンプル出力ファイル1.txt:

000: thislineneedstobeextracted  
identifier 767  
identifier 7686    

サンプル出力ファイル2.txt:

000: alsothislineneedstobeextracted  
identifier 767  
identifier 7686    

答え1

試してみるawk

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

関連情報