
基於以下場景,需要從 txt 檔案中提取行到其他檔案:
要匹配的第一個模式始終是以單字 開頭的行identifier
,然後第二個模式將是第一行,以 開頭000
:
在下面的例子中,它將是
000: thislineneedstobeextracted
將輸出寫入第一個檔案後,我們提取以單字 開頭的行identifier
,以及再次以 : 開頭的行,000
但這一次,對於檔案中找到的第二個唯一出現的行,在我們的範例中,
000: alsothislineneedstobeextracted
輸出將寫入第二個文件,依此類推。
輸入樣本
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
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