正則表達式
--概念:一種用來描述文本模式的特殊語法
--由普通字符(例如:字符a到z),以及特殊字符(元字符,如/*?等)組成匹配的字符串
--文本過濾工具在某種模式之下,都支持正則表達式
--基本元字符集及其含義
^ 只匹配行首
$ 只匹配行尾
* 一個單字符後緊跟*,匹配0個或多個此單字符
[] 匹配[]內字符。可使一個單字符,也能夠是字符序列。可使用"-"表示[]內字符序列範圍,如用[1-5]代替[12345]
\ 用來屏蔽一個元字符的特殊含義。由於有時在shell中一些元字符有特殊含義。"\"可使其失去應有意義
. 匹配任意單字符
pattern\{n\} 用來匹配pattern出現次數,n爲次數,(這裏的大括號須要轉義,和javascript不一樣)
pattern\{n,\} 含義同上,但次數最少爲n
pattern\{n,m\} 含義同上,但pattern出現次數在n與m之間
--特殊:"^$"匹配空行 "^.$"匹配包含一個字符的行
--shell中彷佛沒有javascript中的\S,\w等元字符
xargs
--對於find命令查找的文件列表,想使用grep命令查找指定文件,可是有時候文件太多了,超過了grep命令的上限,就有了可能報錯
--xargs的做用是:find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是所有,
這樣他能夠先處理最早獲取的一部分文件,而後是下一批,並如此繼續下去
--常見用法: find . -name "*" | xargs grep "hostname"
--注意:在find和grep中,若是不使用xargs,可能沒法查出正確結果
grep
--功能:按照行方式處理文本
--語法格式: grep [選項] 基本正則表達式 [文件](沒有文件也能夠來自管道)
--參數
-n 顯示匹配行及行號
-v 顯示不包含匹配文本的全部行
--grep中的正則表達式不須要使用//
--例如:grep "^2014&" 1.c --在1.c文件中查找以2014開頭而且以2014結尾的字符串
awk
--參數
-F 指定分隔符
--例子①:awk -F ":" '{print $1 "--" $3}' passwd.txt
詳解:'{print $1 "--" $3}',print $1打印第一列的數據,"--"用"--"來分割第一列和第三列數據,這裏必須加雙引號
--②:awk -F ":" '$3>499 {print $1 "\t" $3}' passwd
詳解:$3>499指的是第三列的值大於499的列
--$0表示一行的全部數據
--awk獲取倒數第一個域$(NF-0),倒數第二個域是$(NF-1)
awk多條件判斷
1.awk中的判斷符號和條件測試中的判斷符號是不一樣的,awk中只有"=","!=","<",">"
2.awk中多條件的鏈接符是"&&"(與)和"||"(或)
例如:awk -F "\t" '$2>=2 && $2<=5 {printf $0}' 1.c
--表示篩選第二列中大於等於2而且小於等於5的數據
sort
sort -n -k7
--"-n"按行排序,"-k[n]"按第n列升序排序
sort -n -k7 -r
--降序排列
tail -[n]
--從底下往上取n行
head -[n]
--從上往下取n行
wc -c
--顯示總共有多少字符
wc -l
--顯示總共有多少行
sed
--語法結構 sed options ... [script] ... [inputfile]
--若是沒有輸入文件,則sed默認對標準輸入進行處理(即鍵盤輸入)。腳本命令是第一個不以"-"開始的參數
--經常使用選項
-n 靜默輸出
-e 容許多個腳本指令被執行
-i 直接修改源文件,通過腳本指令處理過的內容將被輸出至源文件(源文件被修改,慎用) --經常使用用法
--按照一個範圍(第幾行到第幾行)。提取數據
--sed的主要用法是編輯功能...對提取的數據,進行修改,替換,編輯,刪除,插入等操做
--sed經過讀取讀取文件內容,但一次僅讀一行內容進行指令操做後輸出,因此sed更適合處理大數據文件。
--sed -n 'p' 文件名
詳解:打印文件中全部行,包括空行,"p"表示打印行數據
$p表示最後一行;sed -n '$=' 獲取最後一行的行號
--sed -n '3,/ddd/p' 文件名
詳解:從第三行開始匹配,打印含有ddd的行,、
--sed -n '/^$/=' 文件名
詳解:打印空行的行號,"="表示打印行號,不打印行數據
--sed多條指令的執行方法1 sed -n -e '3p' -e '/^$/=' 1.c
詳解:經過仔細觀察發現,若是第二行是空行,會先打印第二行的行號,再打印第三行,
這是由於sed是一行行的讀取數據的
--sed多條指令執行方法2 sed -n '3p;/^$/=' 1.c
注意用分隔符";"分開
--sed腳本操做選項
a(append) 追加
i(insert) 插入
d(delete) 刪除
s(substitution) 替換
--例子:
--sed '2a 大較好' 文件名
詳解:向文本第二行後面追加"你們好"字符串(有換行問題)
--sed '3i 你們好' 文件名
詳解:向文本第三行前插入"你們好"字符串(有換行問題)
--sed 's/匹配原來的字符串正則表達式/向替換的字符/g' 文件名
詳解"s"表示是替換的意思,"g"表示全文的意思
--sed '3,4d' 文件名
詳解:刪除第三行到第四行的數據
--sed 's/hello//g' 文件名
詳解:把全文的hello替換成空字符串--注意:sed語法中,若是須要使用shell變量,那麼不能加"'"單引號,而且變量必須使用${}形式 例如:ipcs | sed -n ${變量1},${變量2}p