天天看點

linux——sort & uniq第一部分:sort第二部分:uniq

第一部分:sort

sort:将檔案的每一行作為一個機關,互相比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後将他們按升序輸出。

常用參數:

參數 意義
-u 在輸出行中去除重複行
-r sort預設排序是升序,加上-r即可降序輸出
-o 将排序後内容輸出到指定檔案
-n 10與2的排序問題,即将内容按照數字排序
-t 指定檔案分隔符
-k 指定排序列數

1.sort:(不帶參數)

linux——sort & uniq第一部分:sort第二部分:uniq

2.sort的-u選項

-u就是在輸出行中去除重複行

linux——sort & uniq第一部分:sort第二部分:uniq

3.sort的-r選項

sort預設的排序方式是升序,如果想改成降序,就加個-r就搞定了

linux——sort & uniq第一部分:sort第二部分:uniq

4.sort的-o選項

由于sort預設是把結果輸出到标準輸出,是以需要用重定向才能将結果寫入檔案,形如sort filename > newfile。

但是,如果你想把排序結果輸出到原檔案中,用重定向可就不行了。

linux——sort & uniq第一部分:sort第二部分:uniq

5.sort的-n選項

在比較數字時候,比如10與2,由于在排序中将這些數字按照字元來排序,排序時候會先比較1和2的大小,因為1比2小,是以10排在了2的前面,是以在數字排序時候要加-n,表示按照數字排序。

linux——sort & uniq第一部分:sort第二部分:uniq

6.sort的-t和-k選項

我們上面的測試檔案都隻有一列,如果碰到檔案有多列,且按照具體某一列排序時,就要考慮分隔符以及指定列數。

-t後面可以設定間隔符。

指定間隔符之後,-k可以指定排序列。

linux——sort & uniq第一部分:sort第二部分:uniq

7.sort其他選項

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

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

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

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

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

8.-k選項詳解

注:所有數字全部瞎編

8.1想要test5按照第三列排序,第三列相同的按照第二列降序排列

linux——sort & uniq第一部分:sort第二部分:uniq

8.2想要從第一列第二個字母開始排序

我們使用了-k1.2,這就表示我們對第一個域的第二個字元開始到本域的最後一個字元為止的字元串進行排序。

linux——sort & uniq第一部分:sort第二部分:uniq

9. -k和-u聯合使用

linux——sort & uniq第一部分:sort第二部分:uniq

由上可知,當按照-k2第二列排序時,baidu和sohu行第二列都為100,在-u中識别這兩行為重複行,是以後面那一行被删除。

第二部分:uniq

uniq指令用于報告或者忽略檔案中的重複的行,一般與sort指令結合使用。

1.uniq:(不使用參數)

uniq去除臨近的相同項。

linux——sort & uniq第一部分:sort第二部分:uniq

2.uniq和sort連用

linux——sort & uniq第一部分:sort第二部分:uniq

3.uniq -c統計重複行出現的次數

   uniq -d僅顯示重複出現的行

   uniq -u僅顯示不重複的行

linux——sort & uniq第一部分:sort第二部分:uniq

如上所示,ccc隻有一行,沒有重複出現過,是以-d之後沒有列印出。

參考:https://www.cnblogs.com/ding2016/p/9668425.html

https://blog.csdn.net/pingD/article/details/78742471

繼續閱讀