直接上菜
需要查验生产环境,某文件夹下,模糊匹配 *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’等其他的字符串。