shell 特殊符號
相關例子,詳見下圖,
2、關於管道符
(1)、cut 分割
-d 分隔符 -f 指定段號 -c 指定第幾個字符
舉例子,見下圖,
上圖例子中,| 輸出結果,cut 分割出後面想要的結果。一般情況下,-c 和 -d 、-f 不同時使用。
(2)、sort 排序
-n 以數字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2
舉例子,見下圖,
可以註意到,紅色框框裏面的內容是按字母順序排列的,這個就是 sort 作用的結果。sort 後面不加任何選項,則從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。
關於ASCII碼,百度百科的解釋如下:
接著往下操作,見下圖,
回車之後,進入下圖,
隨機輸入上圖紅色框框的內容,保存後退出。使用 sort 查看文件 1.txt ,見下圖,
可以看到上圖的排列順序是,先特殊符號,再數字,然後再字母,包括 * 號。以上就是 ASCII 碼的排列順序。
-n 選項是以數字排序,前面的特殊符號和字母,都默認為 0 。見下圖,
-r 選項是反序的意思,見下圖,
-t 後面跟分隔符,-kn1/-kn1,n2 ,這些用的比較少,了解即可。
(3)、wc
-l 統計行數 -m 統計字符數 -w 統計詞
舉個例子,見下圖,
進入 2.txt 文件,編輯輸入下圖紅色框框的內容,
保存後退出。接著統計 2.txt 的字符數,見下圖,
可以看到,2.txt 的字符數是 8 ,為什麽會是 8 呢?cat -A 之前說過,它可以查看 2.txt 文件裏的所有內容,包括隱藏的。然後,就看到了每一行末尾的 $ ,表示的是換行符。所以,wc -m 2.txt 的結果是 8 。
2.txt 裏的內容有兩行,所以顯示的結果是 2 。再次進入 2.txt 編輯文件內容,見下圖,
補充完上圖內容後,保存並退出。再次查看統計詞,見下圖,
-w 是以空白字符作為分隔符的,所以結果顯示為 3 。
(4)、uniq 去重復,-c 統計行數
輸入命令 vi 2.txt ,回車,見下圖,
增加上圖紅色框框的內容,保存並退出。接著往下操作,
發現 uniq 命令對 2.txt 的內容沒有任何影響,再次進入文件 2.txt ,編輯內容如下,
將最後的1和2互換位置,然後保存退出。接著使用命令 uniq 2.txt 查看,見下圖,
這時候,就會看到去重復了。這是有條件的去重復,必須兩個同樣的字符在前後位置,才能去重復。
先排序,後去重復。這樣子使用命令之後,就看不到重復的數值了。還可以使用 -c 選項來統計重復的次數,每一排前面的數字就是重復的次數。
(5)、tee
和 > 類似,重定向的同時還在屏幕顯示,|tee -a 有追加作用
舉例子,見下圖,
從上圖可以看出 |tee 的一個作用就是重定向,還有一個作用是把文件內容打印到屏幕上。
-a 選項有追加的作用,見下圖,
再追加一次,再查看文件,見下圖,
(6)、tr 命令
tr 替換字符,tr ‘a‘ ‘b‘,大小寫替換 tr ‘[a-z]‘ ‘[A-Z]‘
具體操作,詳見下圖,
(7)、split 命令
split 切割,-b 大小(默認單位字節),-l 行數
首先來創建一個大文件,輸入命令 find /etc/ -type f -name "conf" ,回車,見下圖,
該命令結果內容太多,不一一截圖,接著操作如下,
後面這些 4.0 KB的文件也很多,不一一截圖了。接著用命令 du -sh ,回車,見下圖,
內容也非常多,不一一截圖。1000 單位是 b 。因為前面切割的單位是 1000 ,接著往 100 切割,見下圖,
切割成 100 之後,文件就更多了,圖片內容截圖不全,可以註意到這些小文件的命名都是有按字母排序的。文件太多,全部刪除掉,接著往下操作,
shell 特殊符號