awk中刪除重複行

2021-06-27 00:34:37 字數 663 閱讀 5764

在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,...