天天看點

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

号:通配符,可以比對零個或任意多個字元

? 号:單配符,

#号:注釋符,該符号後跟的指令或參數不會執行

\号:加注在特殊符号前使其失去指令意義

|管道符:把一條指令的結果傳遞給另外一條指令,注意後一條指令不是什麼指令都可以,一般是針對文檔的指令。例如less、more、head、tail、grep、sed、awk等等。

$ :變量字首,!¥

; 多條指令寫到一行時用;分割

~ 使用者家目錄替代符,root的家目錄,正則中表示比對符

& 放在指令末尾表示把指令放到背景

把正确和錯誤的結果都輸出到一個檔案

用在shell中表示或者

表示如果指令1失敗則執行指令2,若指令1成功則不執行指令2,指令1、2之間隻有一條指令會執行

&&表示如果指令1失敗,則指令終止,所有指令都不會執行,若指令1成功則指令2才會執行,指令1、2要麼都執行,要麼都不執行。

示例

1、II與&&特殊符号含義示例

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

本例中隻有當ls test2成功後才會執行 touch test2指令。因為test2不存在,是以前一條指令不成功,後面一條指令就不會執行

那麼我們換成 ls test2 || touch test2看看

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

本例中,因為前面一條指令 ls test2失敗了,于是第2條指令就被執行了

分隔符

cut指令用來顯示行中的指定部分,删除檔案中指定字元串。

指令寫法:cut -d “分割标記” -f 第幾段至第幾段 cut -c n(第幾個字元)

選項:

-c:僅顯示行中指定範圍的字元;

-d:指定字段的分隔符,預設的字段分隔符為“TAB”;

-f:顯示指定字段的内容;

用法舉例:

1、指令:<code>cat /etc/passwd |head -2 |cut -d ":" -f 1</code>

圖中标記1:選項-d用來制定分割符号,passwd檔案中用的是“;”号,于是我們就輸入-d “;”讓程式認出文本中的分段,為-f 選項提供分段依據

圖中标記2:選項-f是選擇第幾段到第幾段,豎排的叫段,相當于excel的選取單列。

圖中的指令含義就是顯示passwd檔案中的前2行文字的第1段,分段符是分号“;”

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

2、指令:<code>cat /etc/passwd |head -2 |cut -c 4</code>

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

指令寫法

-t&lt;分隔字元&gt;:指定排序時所用的欄位分隔字元;

-n:依照數值的大小排序,采用該選項時,字母或者符号開頭的文字會被認為數值是0而排在前面;

-r:以相反的順序來排序;

-u:表示去重複

-kn1,n2:表示由n1區間排序到n2區間,可以隻寫-kn1,即對n2字段排序。

1、對檔案passwd前5行進行排序

指令:<code>head -n 5 /etc/passwd | sort</code>

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

預設情況是root在第一行的。這裡adm這個到第一行了。

2、對檔案test1按數字排序

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

注意符号和字母的行因為等于0是以排在前面

3、對passwd檔案前三行按照第三列數字大小排序并輸出結果。

head -n 3 /etc/passwd | sort -t “:” -k3 -n
Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

wc指令用于統計文檔的行數、字元數或詞數。

-l :統計行數

-m:統計字元數

-w:統計詞數

用法舉例

我先建立一個測試文檔,他的内容是下面這個

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

1、wc -l 統計行數

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

2、wc -m統計字元數(注意末尾那個$表示換行的意思)

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

3、wc -w統計詞數

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

看來應該是把隻要是兩個分隔符之間的東西就認為是一個word。這個word不是語言學上的word。

uniq指令是用來去重的,他去的是兩個連續行之間的重,那麼你第一行和第三行内容重複的話,uniq是不去的,是以我們一般把這個指令和sort一起用,先排序再去重。注意結果是輸出到螢幕中,不會去修改原始檔案,除非你用重定向把原始檔案内容修改掉。

-c 統計某一内容重複次數

1、排序1.txt 并去重顯示,同時顯示某一字元串重複次數。

Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

tee指令用于将資料重定向到檔案,另一方面還可以提供一份重定向資料的副本作為後續指令的stdin。tee - read from standard input and write to standard output and files,簡單的說就是把資料重定向到給定檔案和螢幕上。該指令一般跟在|管道符之後。

-a 追加,像&gt;&gt;追加重定向。

echo "i am learning linux" | tee 2.txt
Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

tr指令用于替換字元,從标準輸入中替換、縮減和/或删除字元,并将結果寫到标準輸出。

用法:tr [選項]... SET1 [SET2]

-d 删除某個字元,後面跟要删除的字元

-s删除重複的字元,注意是連續相同的字元

1、替換文字中的小寫字母為大寫字母

echo "HELLOWORLD" | tr '[A-Z]' '[a-z]'
Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

2、替換某個字元

cat 1.txt | tr '1' '@'
Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

split指令可以将一個大檔案分割成很多個小檔案,有時需要将檔案分割成更小的片段,比如為提高可讀性,生成日志等。實際工作中比如你碰到一個10G的日志檔案,這時你不做切割基本無法檢視他,是以我們需要split他來查閱。

用法:split [選項]... [輸入 [字首]]

選項

-b 指定分割後每個檔案大小,可以寫成10KB、1.44MB等等

-l 指定多少行為一個分割檔案

1、把一個檔案拆成1000位元組一個檔案,并以test為字首

split -b 1000 a.txt test
Linux系統 shell基礎(三)一、shell中的特殊符号二、和管道符相關的指令

 本文轉自 whytl 51CTO部落格,原文連結:http://blog.51cto.com/11934539/2060534

繼續閱讀