管線命令介紹
一般執行bash指令的時候會有輸出結果,很多情況的輸出不符合我們想要的格式,這時候就可以用管線命令來控制輸出格式了,"|"是管線命令的界定符,管線命令有兩個需要注意的地方
僅能處理standard output
管線命令必須能接受前一個指令的輸出結果作為standward input繼續處理才行
簡單來說,bash或者管線命令需要正確執行(出現錯誤會中斷執行)
截取命令cut,grep
cut
cut指令以行為單位處理輸出消息,"切"出一段你想要的結果
cut選項與參數:
-d 以某個字符為分割標示(只能單字符)與-f一起使用
-f -d將輸出分成幾段,-f輸出第幾段
-c 以字符為單位截取某一長度的信息
示例一:
cut指令
上圖指令是顯示/etc下的文件信息(ll /etc/),並且以空格作為分割符(-d ' '),輸出第一欄(-f1)
示例二:
上圖指令是顯示/etc/下文件信息,輸出每一行的前四個字符(-c 1-4)
grep
grep是對輸出信息進行抓去操作,此指令不僅可以抓取bash指令輸出消息,還可以抓取文件信息,十分重要
grep指令的選項與參數:
root@ubuntu-3:~# grep [-cinv] [--color=auto] '搜尋字串' filename
-c 計算"搜尋字串"的次數
-i 忽略大小寫
-n 輸出行號
-v 反向查詢,即抓取不包含"搜尋字串"的信息
--color=auto 抓取結果高亮顯示
示例一:
對ps -aux指令抓取root用戶
排序指令:sort,wc,uniq
sort
root@ubuntu-3:~# sort [-fburtk] [file or stdin]
sort選項與參數:
-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
-b :忽略最前面的空白字符部分;
-r :反向排序;
-u :就是 uniq ,相同的數據中,僅出現一行代表;
-t :分隔符號,默認是用 [tab] 鍵來分隔;
-k :以那個區間 (field) 來進行排序的意思
範例一:
對/etc/passwd 下的內容以":"分割,並且用第三欄來排序
uniq
如果我排序完成了,想要將重複的數據僅列出一個顯示,可以怎麼做呢?
root@ubuntu-3:~# uniq [-ic]
uniq選項與參數
-i 忽略大小寫
-c 進行計數
範例一:使用 last 將帳號列出,僅取出帳號欄,進行排序對重複數據僅顯示一次;
wc
如果我想要知道 /etc/passwd 這個文件裡面有多少字?多少行?多少字符的話, 可以怎麼做呢?其實可以利用 wc 這個指令來達成喔!
root@ubuntu-3:~# wc [-lwm]
wc選項與參數
-l :僅列出行;
-w :僅列出多少字(英文單字);
-m :多少字符;
示例一: