1. 程式人生 > >Linux系統命令及Shell指令碼學習筆記五:字元處理

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_