Shell高階命令

2021-09-12 04:30:43 字數 3830 閱讀 3139

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 排序時,處理英文本母 數字及空格字元外,忽略其...