sed與awk去除重複行

2022-09-01 19:42:10 字數 2248 閱讀 7759

1 如果僅僅是刪除內容完全一樣重複行 

則可以使用sort先進行排序 然後使用 uniq進行刪除重複資料即可

例如  cust.txt

txt** 

130000006800,17,151,01,250100  

130000006800,17,151,01,250101  

1300001077,17,151,01,256600  

1300002764,17,151,01,256600  

1300002764,17,151,01,256630  

1300003690,17,151,01,256600  

1300001077,17,151,01,256600  

1300004771,17,151,01256600  

1300006064,17,151,01,251900  

130000693300,17,151,01370102690715295  

1300013082,17,151,01,51700  

第3行與第7行完全相同

第一步:sort 進行排序

第二部: uniq 去除重複(必須先進行排序,否則uniq無法去除重複 uniq 是比較前後兩行的資料,如果相鄰兩行資料不同則認為資料不同)

shell** 

sort cust.txt | uniq > target.txt  

檢視target.txt

txt** 

130000006800,17,151,01,250100  

130000006800,17,151,01,250101  

1300001077,17,151,01,256600  

1300002764,17,151,01,256600  

1300002764,17,151,01,256630  

1300003690,17,151,01,256600  

1300004771,17,151,01256600  

1300006064,17,151,01,251900  

130000693300,17,151,01370102690715295  

1300013082,17,151,01,51700  

發現 1300001077,17,151,01,256600 這條記錄只有一條了

2 根據指定列進行去除重複行

這裡的重複是指如果兩行的某一列資料相同,則認為是重複資料

例如第1行與第2行資料根據域分隔符","分割的第一列(cust_id)

第4行與第5行資料也是cust_id 相同 現在我們如何去除列相同的重複項

第一步: sort 進行排序

第二步: 用awk對相鄰兩行資料進行比較如果第一列的資料相同則去除重複行(保留第乙個相同的行,)

這裡的去除重複行 並不是真正的刪除重複行而是 利用unix shell 管道 對重複行的不進行重定向輸出

shell** 

sort -t, -k1 cust.txt | awk -f, '  

$1 == cust_id ' > target.txt  

執行結果如下:

txt** 

130000006800,17,151,01,250100  

1300001077,17,151,01,256600  

1300002764,17,151,01,256600  

1300003690,17,151,01,256600  

1300004771,17,151,01256600  

1300006064,17,151,01,251900  

130000693300,17,151,01370102690715295  

1300013082,17,151,01,51700  

語法解釋:

sort -t, -k1   

-t,   指定檔案記錄域分隔符為","  

-k1  是指根據第1列進行排序

awk -f, '  ' > target.txt

-f, 指定域分隔符為","

$1 == cust_id 判斷 第一列是否與變數 cust_id 相等  (不必要擔心 cust_id變數的值 在初始化時 awk 為 cust_id 賦值 為"")

如果相等什麼多不做

$1 != cust_id    如果 一列不等於 cust_id 變數的值  將 $1 賦值為 cust_id

不列印著一行 如果不相等則列印著一行 從而起到去除重複資料的作用

via

sed與awk去除重複行

unixf 1 如果僅僅是刪除內容完全一樣重複行 則可以使用sort先進行排序 然後使用 uniq進行刪除重複資料即可 例如 cust.txt txt 130000006800,17,151,01,250100 130000006800,17,151,01,250101 1300001077,17,...

pandas 去除重複行

方法 dataframe.drop duplicates subset none,keep first inplace false 1引數 這個drop duplicate方法是對dataframe格式的資料,去除特定列下面的重複行。返回dataframe格式的資料。subset column la...

sql 去除重複行

最近做乙個資料庫的資料匯入功能,發現聯合主鍵約束導致不能匯入,原因是源表中有重複資料,但是源表中又沒有主鍵,很是麻煩。經過努力終於解決了,現在就來和大家分享一下,有更好的辦法的可以相互交流。有重複資料主要有一下幾種情況 1.存在兩條完全相同的紀錄 這是最簡單的一種情況,用關鍵字distinct就可以...