2016-05-13 54 views
0

我所拥有的文件与这样的片段:只保留字符串的第一个实例在文本文件中块

R_byK3rjAyABPDuil 
2007 UT H.B. 437 
R_27mvt5Z0CytgL2Q 
2007 UT H.B. 437 
2007 UT H.B. 437 
2007 UT H.B. 437 
R_xGf2zqaMuPgAGn7 

我不想排序或独特的整个文件,只让每个n元组独特的,像这样:

R_byK3rjAyABPDuil 
2007 UT H.B. 437 
R_27mvt5Z0CytgL2Q 
2007 UT H.B. 437 
R_xGf2zqaMuPgAGn7 

任何帮助将是伟大的。我希望对此有一个简单的sed/awk破解。谢谢。

+0

这不是黑客攻击...'uniq'做到这一点的输入为一组线,每一个零字节(ASCII码NULL字符)终止。 – leekaiinthesky

回答

2
$ uniq file 

R_byK3rjAyABPDuil 
2007 UT H.B. 437 
R_27mvt5Z0CytgL2Q 
2007 UT H.B. 437 
R_xGf2zqaMuPgAGn7 

我确定这已经被问过/回答过很多次了。如果你想获得只在整个文件中唯一的行不排序

$ awk '!a[$0]++' file 

R_byK3rjAyABPDuil 
2007 UT H.B. 437 
R_27mvt5Z0CytgL2Q 
R_xGf2zqaMuPgAGn7 
2

随着GNU的grep:

grep -Poz 'R.*(\n[^R].*)?' file 

输出:

 
R_byK3rjAyABPDuil 
2007 UT H.B. 437 
R_27mvt5Z0CytgL2Q 
2007 UT H.B. 437 
R_xGf2zqaMuPgAGn7 

man grep

-P:将PATTERN解释为Perl正则表达式。

-o:仅打印匹配行的匹配(非空白)部分,每个这样的部分位于单独的输出行中。

-z:对待,而不是一个换行符

相关问题