日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

grep/egrep和正则表达式汇总

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 grep/egrep和正则表达式汇总 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

grep, egrep, fgrep


語(yǔ)法格式:

grep [option] ... 'PATTERN' FILE

--color=auto

對(duì)目標(biāo)FILE進(jìn)行搜索,顯示能夠匹配的行


正則表達(dá)式

基本正則: grep

擴(kuò)展正則: grep -E 或者 egrep

fgrep: fast但是不支持正則表達(dá)



基本正則表達(dá)式的元字符:


字符匹配:?

. ?匹配任意單個(gè)字符

[] 匹配指定范圍內(nèi)的單個(gè)字符

[0-9], [[:digit:]] 單個(gè)數(shù)字

[a-z], [[:lower:]] 單個(gè)小寫(xiě)字符

[A-Z], [[:upper:]] 單個(gè)大寫(xiě)字符

[[:space:]] 單個(gè)空白字符

[[:punct:]] 單個(gè)標(biāo)點(diǎn)符號(hào)

[[:alpha:]] 單個(gè)字母

[[:alnum:]] 單個(gè)字母或者數(shù)字

[^] 表示取反


次數(shù)匹配元字符: 用于實(shí)現(xiàn)指定其前面的字符所能夠出現(xiàn)的次數(shù)

* ?任意長(zhǎng)度, 他前面的字符可以出現(xiàn)任意次

例如: x*y

可匹配: xy, xyy, y


\? 0次或1次, 它前面的字符是可有可無(wú)的

例如: x\?y

可匹配: xy, y, ay


\{m\} ?m次, 它前面的字符要出現(xiàn)m次

例如: x\{2\}y

可匹配: xxy, xxxy


\{m,n\} 至少m次,至多n次

例如: x\{2,5\}y

可匹配: xxy, xxxy, xxxxy, xxxxxy


\{m,\} 至少m次


\{0,n\} 至多n次


.* 任意長(zhǎng)度的任意次


工作于貪婪模式: 盡可能多的去匹配


位置錨定:


^ 行首錨定:

寫(xiě)在模式最左邊

$ 行尾錨定:

寫(xiě)在模式最右邊


^$ 空白行


單詞 - 不包含特殊字符的連續(xù)字符組成的串

\< 詞首, 出現(xiàn)于單詞左側(cè)

\> 詞尾, 出現(xiàn)于單詞右側(cè)


分組:

\(\)

例如: \(ab\)*

可匹配 ?ababababab

分組中的模式匹配到的內(nèi)容, 可由正則表達(dá)式引擎記憶在內(nèi)存中,之后可被引用


引用:

例如 \(ab\(x\)y\).*\(mn\)

括號(hào)是有編號(hào)的, 自左向右的左括號(hào),以及與其匹配的右括號(hào)中間的內(nèi)容

數(shù)左括號(hào)


\# 引用第n個(gè)括號(hào)所匹配到的內(nèi)容, 而非模式本身

例如 \(ab\?c\).*\1

這里的\1 代表的是\(ab\?c\) 匹配到的內(nèi)容

比如abcxxxxabc,可以被匹配到

先匹配abc,然后正則將分組中匹配到的abc記錄到內(nèi)存中,匹配.*, 然后繼續(xù)調(diào)用\1,為abc才匹配

abcmnaaa

abcmnabc

abcmnac

acxyac



或者:

(|)

a|b: a或者b


命令選項(xiàng):

-v: 反向選取

eg: 全選非空白行 grep -v "^$" /etc/issue


-o: 僅顯示匹配的字符串,而非字符串所在的行

-i: 忽略字符大小寫(xiě)

-i "cat" 則每一個(gè)字符都不區(qū)分大小寫(xiě), Cat CAt cAt cAT都滿足

-E: 支持使用擴(kuò)展正則表達(dá)式


-A # 同時(shí)顯示匹配內(nèi)容的后一行

-B # 同時(shí)顯示匹配內(nèi)容的前一行

-C # 同時(shí)顯示匹配內(nèi)容的前后各一行



練習(xí):

1、顯示/proc/meminfo文件中以大寫(xiě)或小寫(xiě)S開(kāi)頭的行;

#grep "^[sS]" /proc/meminfo

#grep -i "^s" /proc/meminfo

#grep -E "^(s|S)" /proc/meminfo


2、顯示/etc/passwd文件中其默認(rèn)shell為非/sbin/nologin的用戶;

#grep -v "/sbin/nologin" /etc/passwd



3、顯示/etc/passwd文件中其默認(rèn)shell為/bin/bash的用戶;

進(jìn)一步:僅顯示上述結(jié)果中其ID號(hào)最大的用戶;

#grep "bin/bash" /etc/passwd

#grep "bin/bash" /etc/passwd | sort -n -t: -k3 | tail -1




4、找出/etc/passwd文件中的一位數(shù)或兩位數(shù);

#grep "\<[0-9][0-9]\?\>" /etc/passwd


5、顯示/boot/grub/grub.conf中以至少一個(gè)空白字符開(kāi)頭的行;

# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf?


6、顯示/etc/rc.d/rc.sysinit文件中,以#開(kāi)頭,后面跟至少一個(gè)空白字符,而后又有至少一個(gè)非空白字符的行;

#grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit



7、找出netstat -tan命令執(zhí)行結(jié)果中以'LISTEN'結(jié)尾的行;

#netstat -tan | grep "LISTEN$" ? ???



8、添加用戶bash, testbash, basher, nologin(SHELL為/sbin/nologin),而找出當(dāng)前系統(tǒng)上其用戶名和默認(rèn)shell相同的用戶;

#grep "^\([[:alnum:]]\{1,\}\):.*\1$" /etc/passwd

先錨定行首,匹配至少一個(gè)數(shù)字或字母,并分組,加上第一個(gè):,然后任意字符,最后行尾匹配\1


9、擴(kuò)展題:新建一個(gè)文本文件,假設(shè)有如下內(nèi)容:

He like his lover.

He love his lover.

He like his liker.

He love his liker.

找出其中最后一個(gè)單詞是由此前某單詞加r構(gòu)成的行。



=====================================================================

練習(xí):使用擴(kuò)展的正則表達(dá)式

10、顯示當(dāng)前系統(tǒng)上root、fedora或user1用戶的默認(rèn)shell;

#egrep 'root|richie|jingming' /etc/passwd | cut -d: -f7


11、找出/etc/rc.d/init.d/functions文件中某單詞后跟一組小括號(hào)“()”行;

#grep -o -E "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions


12、使用echo命令輸出一個(gè)路徑,而后使用grep取出其基名;

#echo "/etc/sysconfig" | grep -E "[^/]+/?$"

非反斜線的字符至少。*一個(gè)匹配到行尾



13、找出ifconfig命令結(jié)果中的1-255之間的數(shù)字;

#ifconfig | egrep "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"


14、挑戰(zhàn)題:寫(xiě)一個(gè)模式,能匹配合理的ipv4地址;

1.0.0.1-239.255.255.255



============================================================================

博客作業(yè), 寫(xiě)清楚grep和egrep的各個(gè)元字符的意義和給出實(shí)例說(shuō)明用法



基本正則表達(dá)式:

字符匹配:

. ?匹配單個(gè)任意字符?

[] 匹配指定范圍內(nèi)的任意單個(gè)字符

[^]匹配到的內(nèi)容取反

eg: [^M]?

次數(shù)匹配:

* 在*符號(hào)的前一個(gè)字符可以出現(xiàn)任意次

\? 在\?符號(hào)的前一個(gè)字符可以出現(xiàn)0次或者1次

\{m\} 在\{m\}符號(hào)之前的那個(gè)字符,必須出現(xiàn)m次

\{m,n\} 在\{m,n\}符號(hào)之前的那個(gè)字符,可以出現(xiàn)最少m次,最多n次

\{m,\} 在\{m,\} 符號(hào)之前的那個(gè)字符, 至少出現(xiàn)m次

\{0,n\} 在\{0,n\} 符號(hào)之前的那個(gè)字符,至多出現(xiàn)n次

.* 匹配任意長(zhǎng)度的任意字符

工作于貪婪模式,系統(tǒng)會(huì)盡可能的去多匹配符合的


位置錨定

^ 錨定行首

$ 錨定行尾

^$ 錨定空行


單詞: 不包含特殊字符的連續(xù)字符組成的串

\< 詞首, 出現(xiàn)于單詞的左側(cè) \b也可

\> 詞尾, 出現(xiàn)于單詞的右側(cè) \b也可


分組:

\(\)?

分組中的模式匹配到的內(nèi)容, 可以又正則表達(dá)式引擎記憶在內(nèi)存中, 之后可以再次以 \#的形式被引用


引用:

()是有編號(hào)的: 自左向右的左括號(hào),以及與其匹配的右括號(hào)


\#: 引用第n個(gè)括號(hào)所匹配到的內(nèi)容,而非模式本身


例如文件內(nèi)內(nèi)容為:

abcmnxabcmnx

abcmnxbc

abcmnxc

abcmnxx

eg: \(a\(b\(c\)\)mn\(x\)\).*\#

\1 引用到的內(nèi)容就是\(a\(b\(c\)\)mn\(x\)\)匹配的內(nèi)容為

abcmnxabcmnx

\2 引用到的內(nèi)容就是\(b\(c\)\) 匹配到的內(nèi)容為

abcmnxbc

\3 引用到的內(nèi)容就是\(c\) 匹配到的內(nèi)容

abcmnxc

\4 引用到的內(nèi)容就是\(x\) 匹配到的內(nèi)容

abcmnxx

工作于貪婪模式,系統(tǒng)會(huì)盡可能的去多匹配符合條件的內(nèi)容。

所以實(shí)際上,一些子串也會(huì)被匹配到


grep命令

grep [options] PATTERN [FILE...]

grep [options] [-e PATTERN] -f [FILE] [FILE...]


-v 反向選取

-o 僅顯示匹配的字串, 而非字串所在的行

-i ignore-case, 忽略大小寫(xiě)

-E 支持使用擴(kuò)展正則表達(dá)式

-A # after-context

-B # before-context

-C # context



==================================================================

擴(kuò)展正則表達(dá)式:


字符匹配:

.

[]

[^]

次數(shù)匹配:

*

?

+

{m}

{m,n}

{m,}

{0,n}

位置錨定:

^

$

\<, \b

\>, \b

^$

分組:

()

引用: \1, \2, \3 ...


或者:

a|b a或者b

eg:conC|cat是 concat或conCat? ?no

還是conC 或cat?? ?yes

con(C|c)at 是conCat或concat


egrep命令

grep -E ?'PATTERN' FILE...

egrep 'PATTERN' FILE...



轉(zhuǎn)載于:https://blog.51cto.com/richier/1652946

總結(jié)

以上是生活随笔為你收集整理的grep/egrep和正则表达式汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av高清| 欧美综合视频在线 | 色呦呦视频在线 | 欧美精品亚洲精品日韩精品 | 91亚洲精品久久久蜜桃网站 | 久久一区二区精品 | 欧美一区视频 | 一卡二卡久久 | 久久色中文字幕 | 在线aa| 超碰免费97 | 久久狠狠高潮亚洲精品 | 亚洲精品一区二区三区在线观看 | 红色假期黑色婚礼2 | 日韩精品三级 | 中文字幕在线播 | av男人的天堂在线观看 | 色偷偷噜噜噜亚洲男人的天堂 | 国内精品一区二区三区 | 久色精品视频 | 在线国产欧美 | 国产一区二区激情 | 右手影院亚洲欧美 | 日本xxxx高潮少妇 | www.久热 | 少妇一级淫片免费看 | 日韩精品v | 中文字幕国产亚洲 | 国产精品视频在线观看免费 | 免费成人在线视频观看 | 久久a视频 | 久久午夜免费视频 | 国产乱人伦精品一区二区 | 自宅警备员在线观看 | 日本美女性生活视频 | 免费av在线网站 | 国内精品人妻无码久久久影院蜜桃 | 欧美国产日韩在线视频 | 超碰免费在线播放 | 在线播放亚洲精品 | 久久99国产精品视频 | 日韩在线高清视频 | 性xxxx| 日日夜夜天天干 | 91国在线观看| 四虎永久在线精品免费一区二区 | www.在线播放 | 青青操青青 | 黄片毛片在线看 | 人妻互换免费中文字幕 | 国产又粗又猛又色 | 麻豆成人91精品二区三区 | 欧美视频你懂的 | 亚洲黄色三级 | 日本天堂在线观看 | 佐佐木明希电影 | 成人91| 91视频啊啊啊 | 国产福利久久 | 国产精品第72页 | 亚洲女人毛片 | 久久久国产精品免费 | 国产丝袜美腿一区二区三区 | 佐山爱在线视频 | 天堂中文资源在线 | 国产婷婷色一区二区三区在线 | 可以看污的网站 | 国产精品一区二区三区线羞羞网站 | 亚洲精品粉嫩小泬 | 国产主播精品在线 | 日本一区二区三区中文字幕 | 亚洲国产日韩av | 成片免费观看 | 国产精品久久一区 | 国产精品无码人妻一区二区在线 | 在线国产福利 | 欧美xxxx免费虐 | 亚洲成av人影院 | 亚洲影视一区二区 | 一区二区三区精彩视频 | 国产精品100| 亚洲性图一区二区 | 美女网站免费观看 | gai免费观看网站外网 | 国产福利免费视频 | 18视频在线观看网站 | 午夜av网址 | 在线观看午夜 | 久久精品影视 | 免费视频91蜜桃 | 日韩av电影手机在线观看 | 亚洲最大的成人网站 | 深夜福利一区二区 | 成人在线网 | 伊人久久久久久久久久久 | 九九色| 欧美大片黄色 | 不卡av免费在线观看 | 亚洲一区二区三区视频在线 |