Linux高頻命令專題 1 sort

2022-05-07 08:00:08 字數 2681 閱讀 5065

sort命令是幫我們依據不同的資料型別進行排序,其語法及常用引數格式:

sort [-bcfmnrtk][原始檔][-o 輸出檔案]
-b   會忽略每一行前面的所有空白部分,從第乙個可見字元開始比較。

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

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

-u 輸出重複行

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

-m 會以月份來排序,比如jan小於feb等等

-n 依照數值的大小排序。

-o《輸出檔案》 將排序後的結果存入指定的檔案。

-r 以相反的順序來排序。

-t《分隔字元》 指定排序時所用的字段分隔字元。

-k 選擇以哪個區間進行排序。

sort將檔案的每一行作為乙個單位,相互比較,比較原則是從首字元向後,依次按ascii碼值進行比較,最後將他們按公升序輸出

[root@localhost ~]# cat sort.txt

banana

pear

orange

[root@localhost ~]# sort sort.txt

banana

orange

pear

[root@localhost ~]# sort sort2.txt

12345 #注意是按acii碼的公升序排列

221339

349782

999

[rocrocket@rocrocket programming]$ cat seq.txt

banana

pear

orange

pear

[rocrocket@rocrocket programming]$ sort seq.txt

banana

orange

pear

pear

[rocrocket@rocrocket programming]$ sort -u seq.txt

banana

orange

pear

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

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

[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt

[rocrocket@rocrocket programming]$ cat number.txt

[rocrocket@rocrocket programming]$

看,竟然將number清空了。

就在這個時候,-o選項出現了,它成功的解決了這個問題,讓你放心的將結果寫入原檔案。這或許也是-o比重定向的唯一優勢所在。

[rocrocket@rocrocket programming]$ cat number.txt13

524[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt

[rocrocket@rocrocket programming]$ cat number.txt54

321

[root@localhost ~]# sort -r sort2.txt

999782

349339

22112345 #預設是按字元排序,由前到後,這裡最前面的1最小

[root@localhost ~]# sort -r -n sort2.txt

12345

999782

349339

221

[rocrocket@rocrocket programming]$ cat facebook.txt

banana:30:5.5

pear:90:2.3

orange:20:3.4

# 這個檔案有三列,列與列之間用冒號隔開了,第一列表示水果型別,第二列表示水果數量,第三列表示水果**。那麼我想以水果數量來排序,也就是以第二列來排序,如何利用sort實現?幸好,sort提供了-t選項,後面可以設定間隔符。指定了間隔符之後,就可以用-k來指定列數了。

[rocrocket@rocrocket programming]$ sort -n -k 2 -t ':' facebook.txt

orange:20:3.4

banana:30:5.5

pear:90:2.3

$ sort -n -t 『 『 -k 3r -k 2 facebook.txt #sort支援這種設定,就是說設定域排序的優先順序,先以第2個域進行排序,如果相同,再以第3個域進行排序。(如果你願意,可以一直這麼寫下去,設定很多個排序優先順序)

guge 50 3000

更多參考: 該文章尾部的時候有一些閒得蛋疼的嘗試

Linux高頻命令專題 23 tar

通過ssh訪問伺服器,難免會要用到壓縮,解壓縮,打包,解包等,這時候tar命令就是是必不可少的乙個功能強大的工具。linux中最流行的tar是麻雀雖小,五臟俱全,功能強大。tar命令可以為linux的檔案和目錄建立檔案。利用tar,可以為某一特定檔案建立檔案 備份檔案 也可以在檔案中改變檔案,或者向...

Linux高頻命令專題 22 gzip

減少檔案大小有兩個明顯的好處,一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間。gzip是在linux系統中經常使用的乙個對檔案進行壓縮和解壓縮的命令,既方便又好用。gzip不僅可以用來壓縮大的 較少使用的檔案以節省磁碟空間,還可以和tar命令一起構成linux作業系統中比較流行的壓...

Linux高頻命令專題 20 du

顯示每個檔案和目錄的磁碟使用空間。du 選項 檔案 檔案預設就代表當前目錄大小 a或 all 顯示目錄中個別檔案的大小。b或 bytes 顯示目錄或檔案大小時,以byte為單位。c或 total 除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。k或 kilobytes 以kb 102...