Linux 命令 & shell 腳本之12(grep)

grep命令的命令行格式如下:
grep [options] pattern [file]

1、[options]主要參數(shù)
-I :忽略大小寫
-c :打印匹配的行數(shù)
-l :從多個(gè)文件中查找包含匹配項(xiàng)
-v :查找不包含匹配項(xiàng)的行
-n:打印包含匹配項(xiàng)的行和行標(biāo)

2、pattern正則表達(dá)式主要參數(shù)
\ 忽略正則表達(dá)式中特殊字符的原有含義
^ 匹配正則表達(dá)式的開始行
$ 匹配正則表達(dá)式的結(jié)束行
\< 從匹配正則表達(dá)式的行開始
\> 到匹配正則表達(dá)式的行結(jié)束
[ ] 單個(gè)字符;如[A] 即A符合要求
[ - ] 范圍 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的單個(gè)字符
* 所有字符,長度可以為0
更多參數(shù):
-a 或 --text : 不要忽略二進(jìn)制的數(shù)據(jù)。
-A<顯示行數(shù)> 或 --after-context=<顯示行數(shù)> : 除了顯示符合范本樣式的那一列之外,并顯示該行之后的內(nèi)容。
-b 或 --byte-offset : 在顯示符合樣式的那一行之前,標(biāo)示出該行第一個(gè)字符的編號。
-B<顯示行數(shù)> 或 --before-context=<顯示行數(shù)> : 除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。
-c 或 --count : 計(jì)算符合樣式的列數(shù)。
-C<顯示行數(shù)> 或 --context=<顯示行數(shù)>或-<顯示行數(shù)> : 除了顯示符合樣式的那一行之外,并顯示該行之前后的內(nèi)容。
-d <動作> 或 --directories=<動作> : 當(dāng)指定要查找的是目錄而非文件時(shí),必須使用這項(xiàng)參數(shù),否則grep指令將回報(bào)信息并停止動作。
-e<范本樣式> 或 --regexp=<范本樣式> : 指定字符串做為查找文件內(nèi)容的樣式。
-E 或 --extended-regexp : 將樣式為延伸的正則表達(dá)式來使用。
-f<規(guī)則文件> 或 --file=<規(guī)則文件> : 指定規(guī)則文件,其內(nèi)容含有一個(gè)或多個(gè)規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個(gè)規(guī)則樣式。
-F 或 --fixed-regexp : 將樣式視為固定字符串的列表。
-G 或 --basic-regexp : 將樣式視為普通的表示法來使用。
-h 或 --no-filename : 在顯示符合樣式的那一行之前,不標(biāo)示該行所屬的文件名稱。
-H 或 --with-filename : 在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。
-i 或 --ignore-case : 忽略字符大小寫的差別。
-l 或 --file-with-matches : 列出文件內(nèi)容符合指定的樣式的文件名稱。
-L 或 --files-without-match : 列出文件內(nèi)容不符合指定的樣式的文件名稱。
-n 或 --line-number : 在顯示符合樣式的那一行之前,標(biāo)示出該行的列數(shù)編號。
-o 或 --only-matching : 只顯示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不顯示任何信息。
-r 或 --recursive : 此參數(shù)的效果和指定"-d recurse"參數(shù)相同。
-s 或 --no-messages : 不顯示錯誤信息。
-v 或 --invert-match : 顯示不包含匹配文本的所有行。
-V 或 --version : 顯示版本信息。
-w 或 --word-regexp : 只顯示全字符合的列。
-x --line-regexp : 只顯示全列符合的列。
-y : 此參數(shù)的效果和指定"-i"參數(shù)相同。

1.簡單的例子演示了使用grep命令

[root@MYSQL8 myshell]# cat file1.txt 
one
two
three
four
five

[root@MYSQL8 myshell]# grep three file1.txt
three

[root@MYSQL8 myshell]# grep t file1.txt
two
three

第一個(gè)例子在文件file1中搜索能匹配模式three的文本
第二個(gè)例子在文件file1中搜索能匹配模式t的文本

顯示匹配模式的行所在的行號,可加-n參數(shù)
[root@MYSQL8 myshell]# grep -n t file1.txt
2:two
3:three

有多少行含有匹配的模式,可用-c參數(shù)
[root@MYSQL8 myshell]# grep -c t file1.txt
2

2.進(jìn)行反向搜索(輸出不匹配該模式的行),可加-v參數(shù)

[root@MYSQL8 myshell]# grep -v o file1.txt
three
five

3.指定多個(gè)匹配模式,可用-e參數(shù)來指定每個(gè)模式

例子輸出了含有字符t或字符f的所有行
[root@MYSQL8 myshell]# grep -e t -e f file1.txt
two
three
four
five

grep搜索中使用正則表達(dá)式的簡單例子(如下例子同上)
[root@MYSQL8 myshell]# grep [tf] file1.txt
two
three
four
five

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容