linux之grep命令基础跟练教程

grep 命令是 Linux 系统中非常重要的文本搜索工具,广泛用于在文件中查找匹配的文本行。grep 的全称是 “global regular expression print”,意味着它可以使用正则表达式在文件中搜索匹配的内容,并将匹配的行打印出来。

基本语法:

grep [options] pattern [file…]

pattern:要搜索的字符串或正则表达式。

file:要搜索的文件。如果不指定文件,grep 会从标准输入读取数据。

options:用于控制 grep 行为的选项

常用选项

   -i:忽略大小写(不区分大小写进行搜索)。

   -n:显示匹配行的行号。

   -w:只匹配整个单词。

   -v:反转匹配(显示不匹配的行)。

   -r 或 -R:递归搜索目录。

   -l:只显示匹配的文件名。

   -c:只显示匹配的行数。

   -H:显示匹配行的文件名。

   -o:仅输出匹配的部分,而不是整行。

   -A [num]:显示匹配行之后的 [num] 行。

   -B [num]:显示匹配行之前的 [num] 行。

   -C [num]:显示匹配行前后 [num] 行。

举例说明:

grep 查找文件中是否包含某个特定的字符串。

grep “hello” file-1.txt #会显示 myfile.txt 文件中包含 “hello” 的所有行。

grep -i “hello” file-1.txt #默认情况下,grep 是区分大小写的。如果你想忽略大小写,可以使用 -i 选项。

grep -n “hello” file-1.txt  #如果你还想显示匹配行的行号,可以使用 -n 选项。

grep -w “hello” file-1.txt 如果你想确保 grep 只匹配完整的单词,而不是单词的一部分,可以使用 -w 选项。

grep -v “hello” file-1.txt #反向查找(排除匹配)

如果你只关心匹配的行数,可以使用 -c 选项。

grep “hello” *.txt #查找文件中的所有匹配

grep -r “hello” /path/to/directory  #递归查找要在目录及其子目录下递归查找,可以使用 -r 或 -R 选项。(-R 会比 -r 更广泛地搜索,包含符号链接指向的目录。)

grep -l “hello” *.txt  #如果你只关心哪个文件包含匹配项,而不是显示匹配的内容,可以使用 -l 选项。

使用正则表达式,grep支持正则表达式。如果你想使用扩展正则表达式,可以加上 -E 选项,或者直接使用 egrep 命令,它等效于 grep -E。

grep -E “hello|1” file-2.txt #会匹配 “hello” 或 “1”

grep -e “hello” -e “1” file-2.txt #同时匹配多个模式,可以通过使用 -e 选项来指定多个模式。会匹配 “hello” 或 “1”

输出匹配的上下文,有时你可能不仅想看匹配的行,还想查看匹配的上下文(前后几行)。可以使用 -A(after)、-B(before)、-C(context)选项。

-o, –only-matching 只显示匹配的部分,而不是整行。

匹配文件中的 IPv4 地址

grep -oE “([0-9]{1,3}.){3}[0-9]{1,3}” example.txt

多条件匹配

grep -E “error|fail” *.log | grep -v “ignore” #查找 .log 文件中包含 error 或 fail 的行,并排除包含 ignore 的行。

grep 是一个功能强大且灵活的工具,可以通过选项和正则表达式满足大部分文本搜索需求。在实际应用中,还可以通过管道符(|)将 grep 与其他命令结合使用,从而实现更复杂的任务。

扫码访问小程序中的本文

微信小程序二维码

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部