shell指令碼(四)

來源:互聯網
上載者:User

標籤:


shell指令碼(四)

(7)tr命令

#實現字元轉換功能

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

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

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


#刪除所有數字

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

tr -d 0-9 < name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/42/wKioL1V33TThK0_5AADjuh2r3GM034.jpg" />

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

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/46/wKiom1V325ChvAkqAAE7_xROq0A755.jpg" />

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/42/wKioL1V33TbQq3c9AADG2djsQg8833.jpg" />

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


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

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/46/wKiom1V325GgL8wDAAEJKtj-REc150.jpg" />

3、Regex

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

"*":0個或多個在*字元之前的那個一般字元

".":匹配任一字元

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

"$":匹配行末

"[]":匹配字元集

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

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

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

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

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

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

"?":匹配0個或1個在?字元之前的那個一般字元

"+":匹配1個或多個在+字元之前的那個一般字元

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

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

(3)grep命令

#支援Regex的多用途文本搜尋工具

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

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

#-s:不顯示不存在或無匹配檔案的錯誤資訊;-v:顯示不包含匹配文本的所有行;

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

#狀態來表示搜尋是否成功;-b:列印匹配行距檔案頭的位移量,以位元組為單位;

#-o:與-b結合使用,列印匹配詞距檔案頭的位移量,以位元組為單位;-E:使用擴充運算式

#-F:不使用Regex,以字串的字面意思進行搜尋


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


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

grep "nam*3" name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/42/wKioL1V33TajaXYwAACqEJVVZfA511.jpg" />

#"."用法,搜尋"na任一字元3"

grep "na.3" name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/46/wKiom1V325HQiJPZAACd29BHrxA442.jpg" />

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

grep -n ^A a.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/42/wKioL1V33TfBJDPuAABmQf9ezkI667.jpg" />

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

grep 10$ name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/46/wKiom1V325LRhsWoAACccRe7KpE865.jpg" />

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/42/wKioL1V33TfxYPtNAADudjMPuBA205.jpg" />

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

grep ^\* name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/46/wKiom1V325LjWyaYAADhMHchFwE322.jpg" />

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

grep "\<name3\>" bkname.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/42/wKioL1V33Tiy8U7TAADPGKSIzzA292.jpg" />

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/46/wKiom1V325OSEMBKAACy1JQOmIs534.jpg" />

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/46/wKiom1V325OzffxVAACot_R-xe8406.jpg" />

#"?"、"+"、"()"和"|"屬於Regex擴充,需要使用-E參數

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

grep -E "num?" bkname.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/42/wKioL1V33TnCGMfMAADAAspU8vA418.jpg" />

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

grep -E "t+" bkname.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/46/wKiom1V325Syr9kVAACkl9TOPqY779.jpg" />

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/42/wKioL1V33TmDNZlZAADMb0HJowo347.jpg" />

#多檔案搜尋包含name1的行,並輸出行號

grep name1 name.txt num.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/46/wKiom1V325TTW8qPAAB3CUi9cc8691.jpg" />

#顯示匹配行前後2行

grep -2 name2 name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/42/wKioL1V33TryON0_AACRSj5Vm4M877.jpg" />

#顯示匹配行的

grep -A2 name2 name.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/46/wKiom1V325XRJ_IOAAClvywgC8k999.jpg" />

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

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/42/wKioL1V33TrxnQTsAAB3LKFdzug070.jpg" />

#-i:忽略大小寫

grep -i name bkname.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/46/wKiom1V325XiBbNuAADDuwUm07M190.jpg" />

#-h:多檔案查詢不顯示檔案名稱

grep -h test bkname.txt num.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/42/wKioL1V33TuQe8P0AADl-Ax1IQU529.jpg" />

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

grep -n test bkname.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/46/wKiom1V325aC3RWKAACzosNmCRQ658.jpg" />

#-w:尋找的字串必需為完整的單詞;

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

grep -w test bkname.txt

grep -x test bkname.txt

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/42/wKioL1V33TuT4oxaAABpVEpjAog323.jpg" />

本文出自 “愛就行動” 部落格,請務必保留此出處http://1055745601.blog.51cto.com/5003160/1660406

shell指令碼(四)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.