shell腳本(四)


shell腳本(四)

(7)tr命令

#實現字符轉換功能

#-c string:反選string字符集,即除了該字符串的所有字符集

#-d string:刪除string中出現的所有字符

#-s:刪除所有重複出現的字符序列,只保留一個


#刪除所有數字

tr -d "[[:digit:]]" < name.txt

tr -d 0-9 < name.txt

#所有小寫字母轉換成大寫字母

tr  "[a-z]" "[A-Z]" < name.txt

tr  "[[:lower:]]" "[[:upper:]]" < name.txt

#-c用法,將所有非26個字母替換成換行符,並且重複出現的換行符壓縮成1個換行符

tr -cs "[a-z][A-Z]" "[\n]" < name.txt

#支持使用字符*數字模式,如n*4代表n出現4次


#-s是將連續重複出現的字母、數字壓縮成1個

tr -s "[a-z][A-Z],[[:digit:]]" < num.txt

#結果同1行的test,t和t並不算是重複的

3、正則表達式

(1)匹配符:"*"、"^"、"."、"$"等

"*":0個或多個在*字符之前的那個普通字符

".":匹配任意字符

"^":匹配行首,放在[]字符集裏面表示取反

"$":匹配行末

"[]":匹配字符集

"\":轉義符,屏蔽一個元字符的特殊意義

"\<\>":精確匹配符號

"\{n\}":匹配前面字符出現n次

"\{n,\}":匹配前面字符至少出現n次

"\{n,m\}":匹配前面字符出現n-m次

(2)擴展:"?"、"+"、"()"、"|"

"?":匹配0個或1個在?字符之前的那個普通字符

"+":匹配1個或多個在+字符之前的那個普通字符

"()":表示一個字符集

"|":表示"或",匹配一組可選的字符

(3)grep命令

#支持正則表達式的多用途文本搜索工具

#-c:只輸出匹配行的數量;-i:搜索時忽略大小寫;-h:查詢多文件時不顯示文件名;

#-l:只列出符合匹配的文件名,而不列出具體的匹配行;-n:列出匹配及行號;

#-s:不顯示不存在或無匹配文件的錯誤信息;-v:顯示不包含匹配文本的所有行;

#-w:匹配事詞;-x:匹配事行;-r:遞歸查詢,搜索子目錄;-q:禁止輸出任何結果,以退出

#狀態來表示搜索是否成功;-b:打印匹配行距文件頭的偏移量,以字節爲單位;

#-o:與-b結合使用,打印匹配詞距文件頭的偏移量,以字節爲單位;-E:使用擴展表達式

#-F:不使用正則表達式,以字符串的字面意思進行搜索


#需要特別注意的是,所說的出現次數是指連續出現,而不是總共出現的次數!!!


#"*"用法,字母m出現至少出現0次

grep "nam*3" name.txt

#"."用法,搜索"na任意字符3"

grep "na.3" name.txt

#搜索以A開頭的行,並輸出行號

grep -n ^A a.txt

#"$"用法,搜索以10結尾的行

grep 10$ name.txt

#"[]"用法,搜索一個任意小寫字母后跟一個任意數字的行

grep [a-z][0-9] name.txt

#"\"用法,搜索以*號開頭的行

grep ^\* name.txt

#"\<\>"用法,搜索出現name3的行

grep "\<name3\>" bkname.txt

#"\<n,\>"用法,搜索數字0至少出現5次

grep "0\{5,}" bkname.txt

#"\<n,m\>"用法,搜索數字7出現2次到3次的行

grep  "7\{2,3\}" name.txt

#"?"、"+"、"()"和"|"屬於正則表達式擴展,需要使用-E參數

#"?"用法,搜索包含nu或者num的行

grep -E "num?" bkname.txt

#"+"用法,搜索字母t出現至少1次的行

grep -E "t+" bkname.txt

#"()"和"|"用法結合,搜索包含nu或者num的行

grep -E "(nu|num)" bkname.txt

#多文件搜索包含name1的行,並輸出行號

grep name1 name.txt num.txt

#顯示匹配行前後2行

grep -2 name2 name.txt

#顯示匹配行的

grep -A2 name2 name.txt

#-c:用法,統計空白行數量

grep -c ^$ /etc/httpd/conf/httpd.conf/

#-i:忽略大小寫

grep -i name bkname.txt

#-h:多文件查詢不顯示文件名

grep -h test bkname.txt num.txt

#-n:顯示匹配行和行號

grep -n test bkname.txt

#-w:查找的字符串必需爲完整的單詞;

#-x:顯示完全符合要求的行,而且所搜索的字符串必需是單獨一行

grep -w test bkname.txt

grep -x test bkname.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章