使用正则表达式查找文件中第一个唯一出现的匹配项

使用正则表达式查找文件中第一个唯一出现的匹配项

我想找到文件中第一个唯一出现的匹配项。在下面的示例数据中,我想找到每个块的第一次出现

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 $_"}'

相关内容