直接上菜
需要查驗生產環境,某文件夾下,模糊匹配 *202005*
的文件,是否包含某字符串'image_'
,並輸出文件名
#指令如下
grep -rl image_ *202005*
結果如下:
追根溯源,grep菜譜之強大
grep 簡介
grep(Global Regular Expression Print)命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本。
grep指令簇包括grep、egrep和fgrep,可以通過-G、-E、-F命令行選項來使用grep,egrep和fgrep的功能。
- grep可以通過-E、-F命令行選項來使用egrep和fgrep的功能。
- egrep 是grep的擴展,支持更多的re元字符
- fgrep包含fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義
grep 參數介紹
#可以通過grep --help可查看
-r:搜索子目錄
-d:不搜索子目錄
-c:只輸出匹配行的計數。
-C:匹配的上下文分別顯示[number]行
-i:不區分大小寫。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-L:列出不匹配的文件名
-w:只匹配整個單詞,如 hello不匹配helloabc
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
--color=auto :找到的關鍵詞部分加上顏色的顯示
正則說明
\:忽略原有含義,來表示正則含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達 式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的單個字符。
*:所有字符,長度可以爲0。
實例說明
grep -rl hello *202005*
:在文件名 包含202005的文件中查找hello字符串,並返回該文件。(不加-l
參數會返回行內容)grep -rl ‘hello’ a.txt b.txt c.txt
:在a,b,c三個文件中查找hello,並返回該文件。grep '[0-9]\{4\}' a.txt
:查找包含4個及以上數字的 行返回。(注意:\表示啓用正則含義,或者用egrep '[0-9]{4}' a.txt
)grep hello /usr/file/* | less
當匹配多個行,可以通過管道轉到 less 上查看。grep pattern1 a.txt| grep pattern2
:顯示既匹配 pattern1 又匹配 pattern2 的行。grep pattern1 | pattern2 a.txt
: 匹配正則pattern1 或pattern2 的行。grep hello*
:會匹配 ‘helloa’、’hellob’、’yhelloa’等。grep ‘\<hello’ *
:匹配’hello’和’helloa’,但不是’yhello’。grep ‘\<hello\>’
只匹配’hello’,而不是’yhello’或’helloa’等其他的字符串。