shell grep命令 乙個小白,他能逆襲嗎?

2022-09-23 02:12:11 字數 2402 閱讀 9868

作為linux中最為常用的三大文字(awk,sed,grep)處理工具之一,掌握好其用法是很有必要的。

首先談一下grep命令的常用格式為:grep ?[選項] ?」模式「 ?[檔案]

grep家族總共有三個:grep,egrep,fgrep。

常用選項:  -e :開啟擴充套件(extend)的正規表示式。

-i :忽略大小寫(ignore case)。

-v :反過來(invert),只列印沒有匹配的,而匹配的反而不列印。

-n :顯示行號

-w :被匹配的文字只能是單詞,不能是單詞中的某一部分,如文字中有liker,但搜尋的只是like,就可以使用-w選項來避免匹配liker

-c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,注意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

-o :只顯示被模式匹配到的字串。

--color :將匹配到的內容以顏色高亮顯示。

-a ?n:顯示匹配到的字串所在的行及其後n行,after

-b ?n:顯示匹配到的字串所在的行及其前n行,before

-c ?n:顯示匹配到的字串所在的行及其前後各n行,context

模式部分:  1、直接輸入要匹配的字串,這個可以用fgrep(fast grep)代替來提高查詢速度,比如我要匹配一下hello.c檔案中printf的個數:fgrep ?-c ?"printf" ?hello.c

2、使用基本正規表示式,下面談關於基本正規表示式的使用:

匹配字元:

. :任意乙個字元。

[abc] :表示匹配乙個字元,這個字元必須是abc中的乙個。

[a-za-z] :表示匹配乙個字元,這個字元必須是a-z或a-z這52個字母中的乙個。

[^123] :匹配乙個字元,這個字元是除了1、2、3以外的所有字元。

對於一些常用的字符集,系統做了定義:

[a-za-z] 等價於 [[:alpha:]]

[0-9] 等價於 [[:digit:]]

[a-za-z0-9] 等價於 [[:alnum:]]

tab,space 等空白字元 [[:space:]]

[a-z] 等價於 [[:upper:]]

[a-z] 等價於 [[:lower:]]

標點符號 [[:punct:]]

匹配次數:

\ :匹配其前面出現的字元至少m次,至多n次。      \? :匹配其前面出現的內容0次或1次,等價於\。      * :匹配其前面出現的內容任意次,等價於\,所以 ".*" 表述任意字元任意次,即無論什麼內容全部匹配。

位置錨定:

^ :錨定行首

$ :錨定行尾。技巧:"^$"用於匹配空白行。

\b或\

\b或\>:錨定單詞的詞尾。如"\blike\b"不會匹配alike和liker,只會匹配like

\b :與\b作用相反。

分組及引用:

\(string\) :將string作為乙個整體方便後面引用

\1 :引用第1個左括號及其對應的右括號所匹配的內容。

\2 :引用第2個左括號及其對應的右括號所匹配的內容。

\n :引用第n個左括號及其對應的右括號所匹配的內容。

??? 3、擴充套件的(extend)正規表示式(注意要使用擴充套件的正規表示式要加-e選項,或者直接使用egrep):    匹配字元:這部分和基本正規表示式一樣

匹配次數:

* :和基本正規表示式一樣

? :基本正規表示式是\?,二這裡沒有\。

:相比基本正規表示式也是沒有了\。

+ :匹配其前面的字元至少一次,相當於。

位置錨定:和基本正規表示式一樣。

分組及引用:

(string) :相比基本正規表示式也是沒有了\。

\1 :引用部分和基本正規表示式一樣。

\n :引用部分和基本正規表示式一樣。

或者:a|b :匹配a或b,注意a是指 | 的左邊的整體,b也同理。比如 c|cat 表示的是 c或cat,而不是cat或cat,如果要表示cat或cat,則應該寫為 (c|c)at 。記住(string)除了用於引用還用於分組。

注1:預設情況下,正規表示式的匹配工作在貪婪模式下,也就是說它會盡可能長地去匹配,比如某一行有字串 abacb,如果搜尋內容為 "a.*b" 那麼會直接匹配 abacb這個串,而不會只匹配ab或acb。

注2:所有的正則字元,如 [ 、* 、( 等,若要搜尋 * ,而不是想把 * 解釋為重複先前字元任意次,可以使用 \* 來轉義。

下面用乙個練習來結束本次grep的學習

在網路配置檔案 /etc/sysconfig/network-scripts/ifcfg-ens33 中檢索出所有的 ip:

egrep "[0-9]\.[0-9]\.[0-9]\.[0-9]" /etc/sysconfig/network-scripts/ifcfg-ens32

Linux常用命令,小白要注意乙個命令!!!

常用命令 序號命令作用1 ls檢視當前資料夾下的內容 2pwd 檢視當前所在資料夾 3cd 目錄 切換資料夾 4touch 檔名 如果檔案不存在,新建檔案 5mkdir 檔名 建立目錄 6mv 檔名 r 刪除指定的檔名 目錄名 7clear 清屏小技巧 擴充套件 1.cd cd 可以在最近兩次的工作...

乙個小白的內心自白

大學畢業,作為乙個剛剛步入程式設計師世界的小白,看到身邊如此多的大牛,倍感壓力山大,聽聞養成乙個良好的寫部落格的習慣,對於自己的成長有很大的幫助,哈哈,抱著試一試的態度開始寫。所想所寫只求能夠 獨善其身 哦,對了,算是開始,也算是給自己的鼓勵,更算是對自己能夠堅持不懈的見證。第一天,怎麼也得有點乾貨...

乙個小白的vue理解

幾個主要的鉤子函式 1.beforecreate 建立前 資料觀測和初始化事件還未開始 2.created 建立後 3.beforemouted 載入前 相關的render函式首次被呼叫,把data裡面的資料和模板生成html。注意此時還沒有掛載html到頁面上。完成資料觀測,屬性和方法的運算,初始...