
次のシナリオに基づいて、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