sort
sort
命令介紹sort
命令可針對文字檔案的內容,以行為單位來排序。
命令格式如下:
[root@localhost ~]# sort [選項] 檔名
選項:
-f
:忽略大小寫。-b
:忽略每行前面的空白部分。-n
:以數值型進行排序,sort
命令預設使用字串型排序。-r
:反向排序。-u
:刪除重複行。就是uniq
命令。-t
:指定分隔符,sort
命令預設的分隔符是製表符。-k [n,m]
:按照指定的欄位範圍排序。從第n欄位開始,m欄位結束(預設到行尾)。以下練習預設文字內容如下:
java haha 3
python lala 77
shell dudu 23
hello world 12
linxu xixi 6
1)範例1
sort
命令預設是用每行開頭第一個字元來進行排序的。
執行sort
排序命令:
# 預設按行首字元進行排序
[root@localhost tmp]# sort test.txt
hello world 12
java haha 3
linxu xixi 6
python lala 77
shell dudu 23
如果想要反向排序,請使用-r
選項:
# 反向排序
[root@localhost tmp]# sort -r test.txt
shell dudu 23
python lala 77
linxu xixi 6
java haha 3
hello world 12
2)範例2
按照檔案中,每行的指定欄位進行排序。
需要使用-k
選項:
# -k 2,2表示:指定按照第二個欄位排序
# 2,2表示第2個欄位開始,到第2個欄位結束
[root@localhost tmp]# sort -k 2,2 test.txt
shell dudu 23
java haha 3
python lala 77
hello world 12
linxu xixi 6
注意:文字中欄位之間的分隔是製表符,預設識別。
3)範例3
按照數位進行排序,根據文字中的內容,我們需要按照第三列進行排序。
[root@localhost tmp]# sort -k 3,3 test.txt
hello world 12
shell dudu 23
java haha 3
linxu xixi 6
python lala 77
我們發現按照第三列內容進行排序的結果,有點不正確,3和6怎麼排在12的後邊了。
是因為sort
命令並沒有把第三列的資料當作數位,預設是識別成字串,所以是按照字串的規則來排序的,也就是按第一位的數位進行排序的。
我們需要新增sort
命令的-n
選項,就可以解決上述問題了。也就是讓sort
命令把第三列按數值進行排序。
[root@localhost tmp]# sort -n -k 3,3 test.txt
java haha 3
linxu xixi 6
hello world 12
shell dudu 23
python lala 77
4)範例4
如果想要指定排序的欄位,並且文字中欄位間的分隔符不是製表符,這個時候就需要使用-t
選項指定分隔符,並使用-k
選項指定欄位號。
如下面文字:
java:haha:3
python:lala:77
shell:dudu:23
hello:world:12
linxu:xixi:6
需求:按文字內容中的第三列數位進行排序。
[root@localhost tmp]# sort -t ":" -n -k 3,3 test.txt
java:haha:3
linxu:xixi:6
hello:world:12
shell:dudu:23
python:lala:77
uniq
uniq
命令是用來取消重複行的命令,其實和sort -u
選項是一樣的。
命令格式如下:
[root@localhost ~]# uniq [選項] 檔名
選項:
-i:忽略大小寫。
練習:
student.txt
文字內容如下:
ID Name Python Linux MySQL Java
1 Tangs 88 87 86 85.55
2 Sunwk 99 98 97 96.66
2 Sunwk 99 98 97 96.66
3 Zhubj 77 76 75 74.44
3 Zhubj 77 76 75 74.44
4 Shahs 66 65 64 63.33
4 Shahs 66 65 64 63.33
我們可以看到student.txt
文字的ID為2、3、4的資訊有重複。
使用uniq
命令刪除重複的行後,有如下輸出結果:
[root@localhost tmp]# uniq student.txt
ID Name Python Linux MySQL Java
1 Tangs 88 87 86 85.55
2 Sunwk 99 98 97 96.66
3 Zhubj 77 76 75 74.44
4 Shahs 66 65 64 63.33
wc
wc
命令是統計檔案中行數,字元數,位元組數等資訊。
命令格式如下:
[root@localhost ~]# wc [選項] 檔名
選項:
-l:只統計行數
-w:只統計單詞數
-m:只統計字元數
練習1:
在預設的情況下,wc
命令將計算指定檔案的行數、字數,以及位元組數。
# 行數為5、單詞數30、位元組數124
[root@localhost tmp]# wc student.txt
5 30 124 student.txt
練習2:
檢視特定的統計資訊,只看行數和位元組數。
# 行數為5、位元組數124
[root@localhost tmp]# wc -lm student.txt
5 124 student.txt
練習3:
同時檢視多個檔案的統計資訊。
[root@localhost tmp]# wc student.txt test2.txt
5 30 124 student.txt
8 37 318 test2.txt
13 67 442 總用量