2016-05-13 53 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:對待,而不是一個換行符

相關問題