我想找到文件中第一个唯一出现的匹配项。在下面的示例数据中,我想找到每个块的第一次出现
Chunk 1
some text
second line of random text
Chunk 2
some text
second line of random text
Chunk 3
some text
second line of random text
Chunk 1
some text
second line of random text
Chunk 3
some text
second line of random text
Chunk 2
some text
second line of random text
Chunks[1-8],将返回匹配的所有实例,我只想第一次列出每个唯一的块编号。正则表达式可以工作,所以我可以在 Notepad++ 中使用并最终合并到 python 脚本中。我还想返回唯一的匹配项,以及每个唯一匹配项之后的“随机文本的第二行”
所以我想看到的是
Chunk 1 (first occurrence)
second line of random text
Chunk 2 (first occurrence)
second line of random text<br>
Chunk 3 (first occurrence)
second line of random text
答案1
使用 GNU awk
:
gawk -v 'RS=Chunk [0-9]+\n' -v ORS= '
{$0=lastRT $0}
NR>1 && !seen[$0]++
{lastRT = RT}'
答案2
和perl
。不是特别可读,awk
方法要好得多。
perl -ne 'if(/^Chunk [0-9]+$/&&!exists($seen{$_})){$seen{$_}++;chomp;$a=$_;$_=<>;$_=<>;print "$a $_"}'