超簡單的刪除檔案中重複行的方法及詳解

2021-06-26 21:53:25 字數 671 閱讀 3100

awk '!x[$0]++' afile > bfile

很神奇是不是,那麼它是如果做到的呢?

先說明下awk的基礎知識, awk會依次讀入輸入檔案中的每一行,來執行這個表示式'!x[$0]++',

而表示式中的'$0'就代表檔案中一行資料,如果表示式的值為真就會執行動作,在這裡並沒有指定什麼動作,預設是『print』,

也就是輸出當前行的資料,如果表示式的值為假,就什麼也不做。

好了,有了這些基本知識,我們就以乙個檔案為例,來看下是如何刪除重複行的。

簡單起見,假定輸入檔案'afile'中只有三行文字:

aa

bbaa

1,在讀入第一行'aa'時,'$0'的值是'aa',而關聯陣列x這時什麼也沒有,x['aa']是空,所以『x[$0]++』的值為假,因為有『!』求反,最終該值為真,所以輸出第一行'aa'

2,同樣的道理,在讀入第二行'bb'時,關聯陣列x中只有x['aa']=1,所以x['bb']也是空,最終該值為真,輸出第二行'bb'

3,在讀入第三行時,由於關聯陣列中x['aa']=1,所以x['aa']++的值為真值1,所以'!'求反的結果,最終值為假,不輸出第三行的'aa

同樣以下再有『aa'的行也是不會輸出的,達到了刪除重複行的效果。

刪除檔案中重複的行

今天在經過多次執行指令碼後時候突然發現 etc hosts下面有好多重複的行,突然想起來之前記得學過有命令的,但是忘了,後來在群裡面吼了幾句,有好多牛人相應,閒來與大家分享,o o root zy zy cat etc hosts do not remove the following line,o...

perl刪除檔案中的重複行

perl刪除檔案中的重複行 2011 09 28 19 59 57 分類 python ruby 如果有乙個檔案data有10g大,但是有好多行都是重複的,需要將該檔案中重複的行合併為一行,那麼我們需要用什麼辦法來實現 cat data sort uniq new data 該方法可以實現,但是你需...

oracle刪除重複行的方法

刪除重複行有兩種方法 資料準備 建表語句 create table a a varchar2 10 b varchar2 20 插入資料 insert into a values 11 22 insert into a values 11 22 insert into a values 11 22 ...