<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
之前我們學習了
linux grep
的基本操作,以及提及了linux grep
的孿生兄弟egrep 和 fgrep
,這次我們來看下。
在介紹正規表示式之前,我們先來嘗試一下,假如有如下文字。
我們想獲取空行,應該如何來寫呢?
命令:
grep ^$ test1 -n
通過上述例子,我們使用正規表示式^$
已經成功拿到了第四行資料,那麼,這究竟如何解呢,我們細看博文。
grep
表示式有三種不同的版本,分別為basic
(BRE
) 、extended
(ERE
) 以及 perl
(PCRE
) ,我們grep
預設支援的是BRE
,而ERE
是egrep
支援的,或者說是grep -E
支援的, 而PCRE
則是grep -P
支援的,那麼這三者究竟有啥區別呢?
BRE | ERE | PCRE | |||
---|---|---|---|---|---|
任意字元 | . | . | . | ||
前一個字元0次或者出現1次 | ? | ? | ? | ||
前一個字元出現0次或無數次 | * | * | * | ||
前一個字元出現一個或者更多 | + | + | + | ||
字元集 | [...] | [...] | [...] | ||
字元集取反 | [^...] | [^...] | [^...] | ||
匹配前面字元出現的n次 | {n} | {n} | {n} | ||
匹配前面字元出現的n次以上 | {n,} | {n,} | {n,} | ||
匹配前面字元出現的n次到m次 | {n,m} | {n,m} | {n,m} | ||
開頭 | |||||
結尾 | $ | $ | $ | ||
多表示式連線 | | | ||||
單詞 | w | w | w 或者 [[:word:]] | ||
字母大寫/小寫 | [[:upper:]]/[[:lower:]] | [[:upper:]]/[[:lower:]] | [[:upper:]]/[[:lower:]] | ||
非單詞 | W | ||||
空白字元 | s 或者 [[:space:]] | s 或者 [[:space:]] | |||
非空白字元 | [^[:space:]] | [^[:space:]] | S | ||
數位 | d 或者 [[:digit:]] | [[:digit:]] | [[:digit:]] | ||
非數位 | D | [^[:digit:]] | [^[:digit:]] |
那麼如何進行切換呢? 如上面所示,我們來看下。
如上所述,若我們需要連線多個匹配項,在BRE(grep)
中則是|
,而在ERE(egrep)
和PCRE(grep -P)
中則是|
,所以我們可以順利獲取出結果,更多匹配項如上所述
匹配電話號碼
若電話號碼為xxx-xxxx-xxxx
型別的,如何進行匹配呢? 我們可以使用'[0-9]{3}-[0-9]{4}-[0-9]{4}'
進行匹配。
例如:
命令:
echo "telphone: 180-1234-5678" | grep '[0-9]{3}-[0-9]{4}-[0-9]{4}' -o
同樣的,該方法還可以用來匹配其ip
地址,正則: [0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}
匹配空行
若我們想匹配空行,則可以使用^$
進行匹配,即: 開頭就是結尾。
例如:
如上命令,我們順利取出了 第3、5、6行資料
匹配所有字母
命令:
echo 'Ac123e23dddwQW21' | grep "[[:upper:]]|[[:lower:]]" -o
取出redis
在使用的組態檔
我們知道redis
伺服器是以#
來註釋的,我們可以利用grep
或者egrep
來過濾掉註釋和空格,例如:
fgrep
最為簡單,它不會啟用正規表示式,而是按照字元來進行搜尋,什麼意思呢? 我們舉個小案例就清楚了,
它不會進行任何正則匹配,所以可以直接使用搜尋選就成,不用考慮轉移啥的。
我們一般將BRE
稱之為 基本正規表示式、ERE
稱之為 擴充套件正規表示式 而 PCRE
稱之為Perl
相容的正規表示式,如上正規表示式不是grep
工具所實現的,而是單獨的一套表示式,有很多語言在使用中,例如 sed
預設正規表示式是 BRE
, 而我們之前所學習的awk
使用的正規表示式則是ERE
,是不是感覺知識被串聯起來了呢,好巧,我也是,怎麼樣,快來動手試驗一下吧。
到此這篇關於Linux行處理工具之grep 正規表示式詳解的文章就介紹到這了,更多相關linux grep 正規表示式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45