Linux系統命令及Shell指令碼學習筆記五:字元處理
管道
管道可以把一個命令的輸出內容當作下一個命令的輸入內容,兩個命令之間只需要使用管道符號連線即可,由管道連線起來的程序可以自動執行。
ls -l /etc/init.d | more
檢視目錄下檔案的詳細資訊,但會因為輸出內容過多而造成翻屏,先輸出的內容就會看不到了,利用管道功能,將命令的輸出使用more一頁一頁地顯示出來。
使用grep搜尋文字
grep [-ivnc] '需要匹配的字元' 檔名 : 如果匹配到相關資訊就會打印出符合條件的所有行。
-i 不區分大小寫
-c 統計包含匹配的行數
-n 輸出行號
-v 反向匹配
打印出不包含name的行:
cat test.txt | grep -vi 'name'
grep -vi 'name' test.txt
使用sort排序
sort [-ntkr] 檔名 :對輸出內容直接排序,預設按照每行的第一個字元進行排序
-n 採取數字排序,而非預設的字元
-t 指定分割符
-k 指定第幾列,結合分割符使用,如csv檔案
-r 反向排序,降序
使用uniq刪除重複內容
uniq [-ic] :刪除重複的行,或者統計出完全相同的行出現的次數
-i 忽略大小寫
-c 計算重複行數
uniq的作用在於刪除連續的完全一致的行,一般都需要和sort一起使用
cat test.txt | sort | uniq -c
使用cut擷取文字
cut -f 指定的列 -d '分割符' :它能處理的物件是一行文字,可以指定分割符,打印出以分割符隔開的具體某一列或者某幾列,若沒有分割符,可列印指定的字元。
cat /etc/passwd | cut -f1,6 -d ':'
cat /etc/passwd | cut -f1,6-7 -d ':'
cat /etc/passwd | cut -c1-5,7-10
使用tr做文字替換
文字轉換或者刪除
替換小寫字母為大寫字母: cat /etc/passwd | tr 'a-z' 'A-Z'
刪除冒號: cat /etc/passwd | tr -d ':'
使用paste做文字合併
將文字按照行進行合併,中間使用tab隔開,也可以指定分割符
paste -d ':' a.txt b.txt
使用split分割大檔案
按照梅500行進行分割成小檔案: split -l 500 bigfile.txt small_file_
二進位制檔案只能按照大小進行分割:split -b 64m bigfile.txt small_file_