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