日韩性视频-久久久蜜桃-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网站 | 亚洲毛片av | 久久肉| 日本va视频 | 婷婷av在线 | 欧美日本色 | 日韩精品一区二区免费视频 | 日本后进式猛烈xx00动态图 | 在线观看黄色的网站 | 亚洲色鬼 | fc2ppv色の美マンに中出し | 蜜桃精品视频在线 | 欧美日韩精品网站 | 日本少妇aaa | 日韩成人福利视频 | 狠狠av| 偷拍欧美亚洲 | 高清一区二区三区视频 | 麻豆乱淫一区二区三区 | 爱情岛成人 | 脱裤吧导航 | 中文av字幕 | 日本成人在线不卡 | 综合国产一区 | 恶虐女帝安卓汉化版最新版本 | 久久久久久国产免费a片 | 中文字幕不卡在线播放 | 国产日产欧美 | 亚欧毛片 | 在线免费观看黄色小视频 | 国产精品第十页 | 国产精品不卡在线 | 黄色大片儿. | 顶级嫩模啪啪呻吟不断好爽 | av性在线 | 高清不卡毛片 | 在线观看的黄色网址 | www.色黄 | 最近中文字幕av | 精品久久久av | 日韩中文娱乐网 | 成年人免费看视频 | www.色午夜 | 一级黄色a毛片 | 亚洲人成亚洲人成在线观看 | 国产午夜免费福利 | 在线观看无码精品 | 亚洲精品lv | 亚洲 欧美 日韩系列 | 99国内揄拍国内精品人妻免费 | 亚洲一区二区视频网站 | 亚洲精品免费视频 | jjzz黄色片| 视频一区中文字幕 | 天海翼一区 | 色www国产亚洲阿娇 自拍一区在线 | 日本一区二区不卡视频 | 中国女人内96xxxxx | 中文字幕日韩欧美一区二区三区 | 91喷水视频 | 成人精品在线观看视频 | 日本一级做a爱片 | 国产视频一区二 | 无遮挡裸光屁屁打屁股男男 | 国产精品久久久久久久久久久久久久久久 | 国产亚洲精品美女久久久 | 狠狠鲁影院 | 国产二级一片内射视频播放 | 一本大道综合伊人精品热热 | www.久久99 | 精品亚洲国产成人av制服丝袜 | 菠萝菠萝蜜网站 | 中文幕无线码中文字蜜桃 | 国产激情一区二区三区在线观看 | 欧美福利片在线观看 | 在线激情小视频 | 国产一区二区三区久久 | 日本少妇bbwbbw精品 | 国产香蕉视频在线播放 | 国产91精品一区二区 | 伊人久久大香线蕉综合75 | 女女互慰吃奶互揉调教捆绑 | 成人av日韩| 午夜天堂精品久久久久 | 免费黄色片子 | 日本亚洲色大成网站www久久 | 在线观看无遮挡 | 又黄又色又爽的视频 | 日本黄色一区二区 | 91干网 | 91综合久久 | 神马久久网站 | 国产污视频在线播放 | 欧美变态另类刺激 | 国产精品国产一区二区三区四区 | juliaann欧美二区三区 | 国内精品久 | 欧美男人的天堂 | 日本天堂网在线 |