1. 程式人生 > >Linux命令根據某一列對檔案內容去重

Linux命令根據某一列對檔案內容去重

大家可能經常遇到檔案內容排序去重處理的事情,使用 linux 命令可以很方便的處理,sort 命令在處理檔案排序和去重中起著非常重要的左右,是檔案處理的利器。

比如有以下檔案內容:

pythontab.com

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

4345            15              12121

4145            7               fdf

4245            5               dfsf

1345            76              432423

0693            2               4345

06a7            82              4e

06a9            58              e33

4345            68              343

06c1            56              453

06d7            145             45678

4345            117             21

06e3            280             76

4345            7               3434

4345            48              80

06f1            463             121

4345            3847            131

070b            1236            64

070d            3343            77

0713            104235          90

0715            6               12

0726            121             97798

更多幹貨分享加python程式語言學習QQ群 515267276

想要按照第二列排序去重,怎麼做呢?其實只需要 sort 命令就可以解決了

1

sort -t $'\t' -k 2 -u pythontab.com

 

sort 排序命令 

-t 指定分隔符為‘\t’ 

-k 指定第三列 

-u 去重

 

sort的其他一些選項: 

-r 降序排列 

-o 把排序結果輸出到原始檔

 

sort預設是把結果輸出到標準輸出,所以需要用重定向才能將結果寫入檔案,形如 

sort filename>newfile 

如果將結果輸出到原檔案,用重定向相當於清空

 

-n 看為數字來比較

 

你有沒有遇到過10比2小的情況。我反正遇到過。出現這種情況是由於排序程式將這些數字按字元來排序了,排序程式會先比較1和2,顯然1小,所以就將10放在2前面嘍。這也是sort的一貫作風。 

我們如果想改變這種現狀,就要使用-n選項,來告訴sort,“要以數值來排序”!

 

-f 會將小寫字母都轉換為大寫字母來進行比較,亦即忽略大小寫

 

-c 會檢查檔案是否已排好序,如果亂序,則輸出第一個亂序的行的相關資訊,最後返回1

 

-C 會檢查檔案是否已排好序,如果亂序,不輸出內容,僅返回1

 

-M 會以月份來排序,比如JAN小於FEB等等

 

-b 會忽略每一行前面的所有空白部分,從第一個可見字元開始比較