在awk中,可以用!a[$0]++做為條件,對重複出現的行進行處理。
bash-3.2$ cat 2
abcabc
ef123
dgag
123***
bash-3.2$ awk '!a[$0]++' 2
abcef
123dgag
***
對於awk '!a[$3]++',需要了解3個知識點
1、awk陣列知識,不說了
2、awk的基本命令格式 awk 'pattern'
省略action時,預設action是,如awk '1'就是awk '1'
3、var++的形式:先讀取var變數值,再對var值+1
以資料1 2 3
1 2 3
1 2 4
1 2 5
為例,對於awk '!a[$3]++'
awk處理第一行時: 先讀取a[$3]值再自增,a[$3]即a[3]值為空(0),即為awk '!0',即為awk'1',即為awk '1'
awk處理第二行時: 先讀取a[$3]值再自增,a[$3]即a[3]值為1,即為awk '!1',即為awk'0',即為awk '0'
.............
最後實現的效果就是對於$3是第一次出現的行進行列印,也就是去除$3重複的行
刪除SQL中重複行
問題 乙個表有自增的id列,表中有一些記錄內容重複,也就是說這些記錄除了id不同之外,其他的資訊都相同。需要把重複的記錄保留一條,剩下的刪除。版本一 由於記錄有自增列,所以自增列可以做為記錄的唯一標識,由此可見,重複的記錄的自增id是乙個遞增關係,這裡我們可以只保留id最小的那條記錄,其它的全部刪除...
刪除檔案中重複的行
今天在經過多次執行指令碼後時候突然發現 etc hosts下面有好多重複的行,突然想起來之前記得學過有命令的,但是忘了,後來在群裡面吼了幾句,有好多牛人相應,閒來與大家分享,o o root zy zy cat etc hosts do not remove the following line,o...
sed與awk去除重複行
unixf 1 如果僅僅是刪除內容完全一樣重複行 則可以使用sort先進行排序 然後使用 uniq進行刪除重複資料即可 例如 cust.txt txt 130000006800,17,151,01,250100 130000006800,17,151,01,250101 1300001077,17,...