管線命令(pipe)

管線命令使用【|】界定符號

管線命令只能處理【|】前面一個指令傳來的正確資訊,也就是 standard output 的資訊,對於 standard error output沒有直接處理的能力

管線【|】後面接的是指令,這指令要能接受 standard input 的資料

standard output(stdout) : 標準輸出,指令執行所回傳的正確訊息

standard input(stdin) : 標準輸入,執行指令前所輸入的資料

standard error output(stderr) : 標準錯誤輸出,指令執行失敗所回傳的錯誤訊息

(如ls,less,head等為能接受standard input的指令 ; cd,cp,mv 等指令則無法進行管線命令)

例如

截取命令 : cut,grep

 

cut 取想要的部分

 

cut -d '分隔字元' -f fields         用在有分隔字元

-d: 後面加分隔字元

-f: 根據 -d 的分隔字元將一行訊息分成數段,fields用數字表示,為 -f 取第幾段的意思

 

cut -c 字元間隔                      用於排列整齊的訊息

-c: 以字元為單位取出固定字元區間

 

grep  取有想要的字元的那行

 

grep 【-civ】 【--color=auto】 '字串' filename  

-c: 計算找到'字串'的次數

-i: 大小寫是為相同

-v: 顯示出沒'字串'內容的那一行

--color=auto: 找到的 '字串' 部分加上顏色顯示

 

排序命令 : sort,uniq,wc

 

sort  資料排序

 

sort 【-fbMnrtk】 【file or stdin】

-f: 大小寫是為相同

-b: 忽略最前面的空百字元部分

-M: 以月份排序

-n: 純數字排序(數字大小排序時用到)

-r: 反向排序

-t: 後面接 '分隔字元' 跟 -k 一起使用

-k: 跟前面 -f 用法相同,輸入數字,取第幾段的字元來排序

 

數字排序

 

沒加 -n 的差異,預設是文字排序,所以當要數字排序時,會沒有辦法排序

 

uniq  排序完後,重複的資料只列出一行

 

uniq 【-ic】

-i: 大小寫是為相同

-c: 計算重複字串次數

 

wc  計算資料數目

 

wc 【-lwm】

-l: 只列行數

-w: 只列英文單字數

-m: 只列字元數

 

tr  刪除一段訊息中的文字,或文字交換

 

tr -d 'word'

-d: 刪除訊息中的 word 這字串

 

tr -s 'word' 'test'

-s: test 字串取代掉 word 字串