shell腳本正則表達式


grep與正則表達式:
1、grep 程序
Linux下有文本處理三劍-----grep sed awk
grep :文本,行過濾工具
sed:文本 行編輯器(流編輯器)
awk:報告生成器(做文本格式化輸出)
grep
包括三個命令:grep egrep fgrep,他們是用來進行行模式(pattern)匹配
egrep = grep -E //使用擴展的正則表達式進行匹配
fgrep=fast grep //只使用文件通配符進行匹配
*grep默認使用正則表達式進行文本匹配*
grep 的用法:
grep 【option】.....PATTERN[filename]
grep的常見選項---option
-E 支持使用擴展的正則表達式(ERE)(regexp)
-P 使用Perl語言的正則表達式引擎進行搜索(每一種語言的正則表達式引擎都不相同,甚至sed grep AWK 使用的regrexp的引擎也是不同的)
-i忽略大小寫
-v 進行反選
-o 僅僅輸出匹配的內容(默認輸出的是匹配到的行)
--color=auto 語法着色
-n 顯示行號
a*
grep 的PATTERN
作用:通過一些特殊字符,來表示一類字符內容,交給前面的命令來執行;如果使用特殊字符本身含義,就需要\進行轉義;
回顧:
* ? [] [^]
1、字符匹配
.代表任意一個字符 相當於?
[] 范圍內任意一個字符
[^]范圍外任意一個字符
字符類:[:digit:][:alnum:][:lower:][:upper:][:space:][:punct:]
2、次數匹配
\*匹配前面的字符0次到n次
\?匹配前面的字符0次到1次
\+匹配前面的字符1次到n次
\{m\}匹配前面的字符m次
\{m,n\}匹配前面的字符m次到n次
\{0,n\}匹配前面的字符0次到n次{0要不要}
\{m\}匹配前面的字符至少m次
3、位置錨釘
^錨定行首
$錨定行尾
\b錨定單詞詞首和詞尾
\>錨定詞尾
<\錨定詞首
<\root\> rooter
4、分組
abc* abcccccc abc不是一個整體
\(\) 示例:\(abc)* abcabcabc abcccc
**分組特性: 默認情況下,Linux系統會為分組指定變量,變量的表示形式\1\2\3\4
----------------------------------------------------------------------------------------------------
練習:
1、顯示/proc/meminfo文件中大小S開頭的行
grep -i *^s"/proc/memminfo

2、顯示/etc/passwd文件中不以/bin/bash結尾的行
grep- v */bin/bash$ "/etc/passwd
3、顯示/etc/passwd文件中UID號最大的用戶的用戶名
sort -n -t;-k3 /etc/passwd |tail -1 | cut -d : -f7
4、如果用戶root存在,顯示默認的shell程序
grep *^root\>"/etc/passwd &>/dev/null && grep "^root\>"/etc/passwd |cut-d: -f7
id root & >/dev/null && grep "^rot\>"/etc/passwd |cut -d: -f7
5、找出/etc/passwd 中的二位或三位數
grep /"[0-9]\{2,3}"/etc/passwd
-w //匹配固定單詞
\<[0-9]\[{2-3}\>
\b<[0-9]\[{2,3}\b
6、顯示/etc/rc.d/rc.sysinit文件中,至少以一個空白字符開頭的后面為空白字符的行
grep "^[[:space:]]\+.*[^[:space:]]$"/etc/rc.d/rc.sysinit


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM