Shell-04
Linux下文本處理三劍客-----grep sed awk
??????? sed:文本行編輯器(流編輯器)
?????? awk:報告生成器(文本輸出格式化)
??????? grep:文本行過濾工具 ?每一行進行過濾
?????????????? pattern一般通過通配符和正則表達式兩種方式進行匹配
?????????????? 包含三個命令:grep egrep fgrep,它們是用來進行 行模式(pattern)匹配的
?????????????? Egrep = grep -E //使用擴展的正則表達式
?????????????? Fgrep = fast grep //只使用文件通配符進行匹配 快速文件匹配 不調用正則表達式引擎
??????? grep的用法:
??????? ?grep [option] … PATTERN [filename]
?????????????? A*? 以A開頭的任意文件 *---代表任意字符
?????????????? *grep默認使用正則表達式進行文本匹配*
??????? grep常見選項:
?????????????? -E 支持使用擴展的正則表達式(ERE)regexp
?????????????? -P 使用perl語言的正則表達式引擎進行搜索(每一種語言的正則表達式引擎都不相同,甚至sed、grep、awk使用的正則表達式引擎也不相同)
??????? ?????? -i 忽略大小寫
?????????????? -v 進行反選
?????????????? -o 僅僅輸出匹配的內容(默認輸出的是匹配到的行)
?????????????? --color=auto 語法著色
????????????? -n 顯示行號
?????????????? -w 匹配固定的單詞
作用:通過一些特殊字符,來表示一類字符內容,然后交給前面的命令來執行;如果使用特殊字符本身的含義,就需要進行轉義(\)
回顧文件通配符:* ? [] [^ ]
a)?????? 字符匹配
. 代表任意一個字符==?
[] 范圍內的任意一個字符
[^ ] 范圍外的任意一個字符
字符類:[:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
b)?????? 次數匹配
* 匹配前面相鄰的一個字符0次到n次 n—無數次
\? 匹配前面相鄰的一個字符0次到1次
\+ 匹配前面相鄰的一個字符1次到n次
\{m\} 匹配前面相鄰的一個字符m次
\{m,n\} 匹配前面相鄰的一個字符m到n次
\{0,n\} 匹配前面相鄰的一個字符0次到n次
\{m,\} ?匹配前面相鄰的一個字符至少m次
c)?????? 位置錨定
^ 錨定行首
$ 錨定行尾
\b 錨定單詞詞首和錨定詞尾
\> 錨定詞尾
\< 錨定詞尾
<\root\> --- 匹配root這個單詞
d)?????? 分組
abc*----c出現0-n次
abc看作整體,就要分組
?????? \(\) 實例:\(abc\)* abcabcabc…
?????? **分組特性:默認情況下,linux系統會為分組指定變量,變量的表示形式\1 \2 \3…..
?????? ??????
1.grep -i “^s” /pro
2.grep -v “/b$” /e
3.sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1
4.alias grep =”grep “^root\>” ?--color=auto”
??grep “^root\>” /etc/passwd | cut -d: -f7
grep “^root\>” /etc/passwd &> /dev/null && grep “^root\>” /etc/passwd &> /dev/null | cut -d: -f7
id root &> /dev/null && grep “^root\>” /etc/passwd &> /dev/null | cut -d: -f7
5.grep “[0-9]\{2,3\}” /etc/passwd
grep -w “[0-9]\{2,3\}\>” /etc/passwd
grep “\<[0-9]\{2,3\}\>” ?/etc/passwd
?
?
/etc/rc.d/rc.sysinit-------centos7沒有文件
6. grep “^[[:space:]]\+ .*[^[:space:]]$” /etc/rc.d/rc.sysinit
7.netstat -tan ?----- -t tcp -n
??netstat -tan | grep “LISTEN[[:space:]]*$”
?8.
?
?-s指定用戶使用的
?
?
grep “^\(bash\)\b.*\1$” /etc/passwd
grep “^\(bash\)\>.*\1$” /etc/passwd
?
?
grep “\(^[[:alnum:]]\+\>\).*\1$” ?/etc/passwd
9.IP地址:
?????? 0-255.0-255.0-255.0-255
?????? 0-255
?????? 2 0-4 0-9 ?2[0-4][0-9]
?????? 2 5 0-5 ??25[0-5]
?????? 1 0-9 0-9? 1[0-9][0-9]
?????? 0 0-9 0-9? [0-9][0-9]
?????? 0 0 ?0-9? [0-9]
2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9] \. 2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9] \. 2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9] \. 2[0-4][0-9] | 25[0-5] | 1[0-9][0-9] | [0-9][0-9] | [0-9]
?
?
轉載于:https://www.cnblogs.com/KAJIA1/p/11350901.html
總結
- 上一篇: 理解 RXSwift:单元测试(四)
- 下一篇: 交互输入与for语句