파일에서 처음으로 일치하는 고유한 항목을 찾고 싶습니다. 아래 예제 데이터에서 각 블록의 첫 번째 발생을 찾고 싶습니다.
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
청크[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 $_"}'