簡(jiǎn)介
Linux grep命令是一種非常常用的文本搜索工具,它可以在給定的文件中搜索匹配的字符串,并輸出匹配的行。grep是全稱“global search regular expression print”,可以識(shí)別正則表達(dá)式,并使用正則表達(dá)式進(jìn)行搜索。
選項(xiàng)
以下是grep的所有選項(xiàng):
grep [options] [pattern] [files]
-a, --text: 將二進(jìn)制文件作為文本文件處理。
-c, --count: 顯示匹配行數(shù),而不是行本身。
-e pattern, --regexp=pattern: 查找指定的模式,支持多個(gè)模式。
-f file, --file=file: 從文件中讀取模式,每個(gè)模式占一行。
-i, --ignore-case: 忽略大小寫。
-l, --files-with-matches: 只打印文件名,而不是行本身。
-n, --line-number: 在每行的前面打印行號(hào)。
-r, --recursive: 遍歷子目錄中的文件。
-v, --invert-match: 輸出不匹配的行。
-x, --line-regexp: 僅匹配整行。
-w, --word-regexp: 僅匹配整個(gè)單詞。
pattern通常是一個(gè)正則表達(dá)式,用于匹配指定的文本模式。
files可以是若干個(gè)文件,也可以是目錄。
以上是grep命令的所有選項(xiàng),更多信息可以使用man grep在終端中查看。
常用grep選項(xiàng)舉例
下面是常用的grep選項(xiàng)及其舉例:
搜索指定字符串
可以使用grep搜索包含指定字符串的文件或文件夾,例如:
grep "hello" file.txt grep "hello" folder/file.txt
搜索多個(gè)字符串
使用-E選項(xiàng)可以在同一行中搜索多個(gè)字符串。
grep -E "hello|world" file.txt
忽略大小寫
使用-i選項(xiàng)可以忽略大小寫的差異。
grep -i "hello" file.txt
輸出行號(hào)
使用-n選項(xiàng)可以輸出匹配字符串所在行的行號(hào)。
grep -n "hello" file.txt
反向搜索
使用-v選項(xiàng)可以輸出不包含指定字符串的行。
grep -v "hello" file.txt
搜索某個(gè)范圍內(nèi)的行
使用 -A, -B, 或-C選項(xiàng)搜索特定范圍內(nèi)的行。
grep -A 2 "hello" file.txt #輸出包含“hello”的行以及后兩行。 grep -B 2 "hello" file.txt #輸出包含“hello”的行以及前兩行。 grep -C 2 "hello" file.txt #輸出包含“hello”的行以及前后兩行。
搜索整個(gè)單詞
使用-w選項(xiàng)可以搜索指定單詞作為整個(gè)單詞匹配。
grep -w "hello" file.txt
統(tǒng)計(jì)匹配次數(shù)
使用-c選項(xiàng)可以統(tǒng)計(jì)匹配字符串的個(gè)數(shù)。
grep -c "hello" file.txt
搜索指定文件類型
使用通配符可以搜索特定類型的文件或使用 --include選項(xiàng)來僅搜索指定文件類型。
grep "hello" *.txt grep "hello" --include "*.txt" folder/
搜索子目錄
使用-r或-R選項(xiàng)可以搜索子目錄的文件。
grep -r "hello" folder/ grep -R "hello" folder/
不忽略二進(jìn)制文件
使用-a選項(xiàng)可以強(qiáng)制grep搜索二進(jìn)制文件。
grep -a "hello" binary_file.bin
搜索時(shí)忽略特定目錄
使用 --exclude-dir選項(xiàng)來忽略特定目錄的搜索。
grep -r "hello" folder/ --exclude-dir=log/
搜索特定行數(shù)
使用 -m 選項(xiàng)指定只搜索文件中的前幾行。
grep -m 10 'hello' file.txt # 只搜索文件中的前10行
輸出匹配字符串前后的內(nèi)容
使用 -o 選項(xiàng)僅輸出匹配字符串,而 -A 和 -B 選項(xiàng)可以輸出字符串前后的內(nèi)容。
grep -o 'hello' file.txt # 只輸出匹配到的 'hello' 字符串,而不包含它前后的內(nèi)容 grep -A 3 'hello' file.txt # 輸出包含 'hello' 字符串的行以及后三行 grep -B 2 'hello' file.txt # 輸出包含 'hello' 字符串的行以及前兩行
顯示不匹配行
使用 -L 選項(xiàng)輸出不匹配指定字符串的行。
grep -L 'hello' file.txt # 輸出不匹配 'hello' 字符串的行
顯示匹配行前幾行和后幾行的內(nèi)容
使用 -C 選項(xiàng),可以同時(shí)輸出匹配字符串前后幾行的內(nèi)容。
grep -C 2 'hello' file.txt # 輸出包含 'hello' 字符串的行以及前后兩行內(nèi)容
搜索多個(gè)文件
可以一次性搜索多個(gè)文件。
grep 'hello' file1.txt file2.txt file3.txt # 搜索 file1.txt, file2.txt, file3.txt 文件中的 'hello' 字符串
搜索時(shí)忽略空白字符
使用 -w 選項(xiàng),可以忽略匹配字符串前后的空格、制表符等空白字符。
grep -w 'hello' file.txt # 忽略匹配字符串前后的空格、制表符等空白字符
搜索時(shí)查看匹配字符串的上文或下文
使用 -B 和 -A 選項(xiàng),可查看匹配字符串上下文的內(nèi)容。
grep -B 2 'hello' file.txt # 輸出包含 ‘hello’ 字符串的行以及匹配字符串前2行 grep -A 3 'hello' file.txt # 輸出包含 ‘hello’ 字符串的行以及匹配字符串后3行
以上就是grep的所有功能舉例。
鏈接:https://www.cnblogs.com/LanTianYou/p/17359397.html
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209476 -
字符串
+關(guān)注
關(guān)注
1文章
579瀏覽量
20514 -
命令
+關(guān)注
關(guān)注
5文章
684瀏覽量
22021 -
grep
+關(guān)注
關(guān)注
0文章
23瀏覽量
4726
原文標(biāo)題:常用grep選項(xiàng)舉例
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論