shell指令碼程式設計學習5--管道命令(pipe)
一、管道命令的介紹
1、管道命令「|」僅能處理經由前面乙個命令傳來的正確資訊,也就是standard output的資訊,對於standard error並沒有直接處理能力。
2、管道命令示意圖:
command1 | command2 | command3
即:command1正確執行的資料傳遞給command2,command2正確執行的資料傳遞給command3。
3、在每個管道後面接的第乙個資料必須是命令,而且這個命令必須能夠接收standard input的資料才行,這樣的命令才是管道命令。
二、選取命令:cut、grep
將一段資料以行為單位進行分析,取出我們所想要的,或者經分析關鍵字,取出我們所想要的那一行。
1、cut
(1)作用:在一行資訊中取出某部分我們想要的。
(2)語法:
cut -d '分隔符' -f fields 用於分隔字元
cut -c 字元範圍 用於排列整齊的資訊
(3)引數:
-d:後面接分隔符,與-f一起使用
-f:依據-d的分隔符將一段資訊切割成數段,用-f取出第幾段的意思
-c:以字元為單位取出固定字元區間。
(4)例子:
上面就是取出以:為分隔符的第一段資料。
上面是取出以:為分隔符的第一段和第三段資料。
以上例子,說明取出每一行12個字元以後的資料。
總結:cut的主要用途在於將同一行裡面的資料進行分解,最常用的使用在分析一些資料或文字資料的時候。以某些字元當作切割的引數,然後來將資料加以切割,以取得我們所需要的資料。
2、grep
(1)作用:分析一行資訊,若當中有我們所需要的資訊,就將該行拿出來。
(2)語法:grep [-acinv] [--color=auto] '查詢字串' filename
(3)引數:
-a:將binary檔案以text檔案的方式查詢資料
-c:計算找到『查詢字串』的次數
-i:忽略大小寫的不同
-n:順便輸出行號
-v:反向選擇,即顯示出沒有『查詢字串』內容的一行
--color=auto:可以將找到的關鍵字部分加上顏色顯示
-a:後面可加數字,為after的意思,除了列出該行外,後續的n行也列出來
-b:後面可加數字,為befer的意思,除了列出該行外,前面的n行也列出來
(4)例子:
三、排序命令:sort、wc、uniq
1、sort:
(1)作用:排序,可以按照不同的資料型別排序
(2)語法:sort [-fbmnrtuk] [file or stdin]
(3)引數:
-f:忽略大小寫
-b:忽略最前面的空格符部分
-m:以月份的名字來排序,英文月份
-n:使用純數字排序(預設是一文字型別來排序的)
-r:反向排序
-t:分隔符,預設是用tab鍵來分割的
-u:uniq相同的資料中,僅出現一行代表
-k:以那個區間來進行排序
(4)例子:
預設以文字型別來排序:
以:來分隔,以第三列來排序:
以:來分隔,以第三列的數字排序:
2、wc:
(1)作用:統計乙個檔案裡有多少字、多少行、多少字元
(2)語法:wc [-lwm]
(3)引數:
-l:僅列出行
-w:僅列出多少字(英文單字)
-m:多少字元
(4)例子:
使用last可以輸出登入者,但是last最後兩行並非帳號內容
那麼用下面的一行命令即可取得這個月登入系統的總人次
3、uniq:
(1)作用:將重複的資料僅列出乙個顯示
(2)語法:uniq [-ic]
(3)引數:
-i:忽略大小寫字元的不同
-c:進行計數
(4)例子:
四、雙向重定向:tee
1、作用:可以同時將資料流送與檔案與螢幕
2、語法:tee [-a] file
3、引數:
-a:以累加的方式,將資料加入file中
4、例子:
五、字元轉換命令:tr、col、join、paste、expand
1、tr:
(1)作用:刪除一段資訊當中的文字,或者進行文字資訊的替換。
(2)語法:tr [-ds] set1 ……
(3)引數:
-d:刪除資訊中的set1這個字串
-s:替換掉重複的字元
(4)例子:
將last輸出的資訊中所有的小寫字元變成大寫字元
將/etc/passwd輸出資訊中的冒號刪除
2、col:
(2)語法:col [-xb]
(3)引數:
-x:將tab鍵轉換成對等的空格鍵
-b:在文字內部有反斜槓時,僅保留反斜槓最後接的那個字元
(4)例子:
^i 就是tab,替換後:
3、join:
(1)作用:將兩個檔案當中有相同資料的那一行加在一起
(2)語法:join [-ti12] file1 file2
(3)引數:
-t:預設以空格符分隔資料,並且對比第乙個欄位的資料,如果兩個檔案相同,則將兩條資料連成一行,且第乙個字段放在第乙個
-i:忽略大小寫
-1:代表第乙個檔案要用哪個欄位來分析的意思
-2:代表第二個檔案要用哪個欄位來分析的意思
(4)例子:
注意:在使用join之前,你所需要處理的檔案應該要事先經過排序處理的。
4、paste:
(1)作用:直接將相同行的資料貼在一起,中間以tab鍵隔開
(2)語法:paste [-d] file1 file2
(3)引數:
-d:後面可接分隔符,預設是tab鍵來分隔的
- :如果file部分習寫成- ,表示來自standard input的資料意思。
(4)例子:
5、expand:
(1)作用:將tab鍵轉成空格鍵
(2)語法:expand [-t] file
(3)引數:
-t:後面可以接數字,一般來說乙個tab鍵可以用8個空格鍵替換
(4)例子:
六、切割命令:split
1、作用:將乙個大檔案依據檔案大小或行數來切割成為小檔案,快速又有效
2、語法:split [-bl] file prefix
3、引數:
-b:後面可以接切割成的檔案大小,可以加單位,如:b、k、 m等
-l:以行數來進行切割
prefix:代表前導符,可以作為切割檔案的前導文字。
4、例子:
七、引數代換:xargs
1、作用:產生某個命令的引數的意思,xargs可以讀入stdin的資料,並且以空格符或斷行字元進行分辨,將stdin的資料分隔成為arguments
2、語法:xargs [-0epn] command
3、引數:
-0:如果輸入的stdin有特殊字元,例如` 、\空格等,這個引數可以將它還原成一般字元。
-e:eof
-p:在執行每個命令時都會詢問使用者
-n:後面接次數,每次command命令執行時,要使用幾個引數的意思。
當xargs後面沒有接任何的命令時,預設是echo來進行輸出
4、例子:
八、關於減號-的用途
(1)作用:
(2)語法:
(3)引數:
(4)例子:
(1)作用:
(2)語法:
(3)引數:
(4)例子:
高階shell擴充套件 printf命令
printf命令模仿c程式庫 library 裡的 printf 程式。printf 由 posix 標準所定義,因此使用 printf 的指令碼比使用 echo 移植性好。printf 使用引用文字或空格分隔的引數,外面可以在 printf 中使用格式化字串,還可以制定字串的寬度 左右對齊方式等。...
高階shell擴充套件 cut命令
cut命令用於顯示每行從開頭算起 num1 到 num2 的文字。b 以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 n 標誌。c 以字元為單位進行分割。d 自定義分隔符,預設為製表符。f 與 d一起使用,指定顯示哪個區域。n 取消分割多位元組字元。僅和 b 標誌一起使用...
高階shell擴充套件 sort命令
sort可針對文字檔案的內容,以行為單位來排序。sort bcdfimmnr o 輸出檔案 t 分隔字元 起始字段 結束字段 help verison 檔案 k 列數 按指定列排序。b 忽略每行前面開始出的空格字元。c 檢查檔案是否已經按照順序排序。d 排序時,處理英文本母 數字及空格字元外,忽略其...