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

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

次のシナリオでは、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  

出力file1.txtの例:

000: thislineneedstobeextracted  
identifier 767  
identifier 7686    

出力例 file2.txt:

000: alsothislineneedstobeextracted  
identifier 767  
identifier 7686    

ベストアンサー1

試してみてくださいアッ

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

おすすめ記事