基于以下场景,需要从 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