0


Linux命令之查找字符串grep

概述

grep

命令可以用于在指定文件中通过指定查找模式查找指定字符串。

在这里插入图片描述

注:与该命令有关的还有

egrep

fgrep

可以关注一下。

语法

该命令的语法如下:

grep[选项][查找模式][文件名1, 文件名2, ...]

该命令支持的选项有:
选项说明-a, --text不要忽略二进制的数据

-A <显示行数>

,

--after-context=<显示行数>

除了显示符合范本样式的那一列之外,并显示该行之后的内容-b, --byte-offset在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量

-B <显示行数>

,

--before-context=<显示行数>

除了显示符合样式的那一行之外,并显示该行之前的内容-c, --count只显示匹配行的数量

-C <显示行数>

,

--context=<显示行数>

,

-<显示行数>

除了显示符合样式的那一行之外,并显示该行之前后的内容

-d <动作>

,

--directories=<动作>

当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作

-e <范本样式>

,

--regexp=<范本样式>

指定检索使用的模式-E, --extended-regexp每个模式作为一个扩展的正则表达式对待

-f <规则文件>

,

--file=<规则文件>

从expfile文件中获取要搜索的模式,一个模式占一行-F, --fixed-regexp每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式-G, --basic-regexp将样式视为普通的表示法来使用-h, --no-filename在在查找多个文件时,指示grep不要将文件名加入到输出之前-H, --with-filename在显示符合样式的那一行之前,表示该行所属的文件名称-i, --ignore-case比较时不区分大小写-l, --file-with-matches列出文件内容符合指定的样式的文件名称-L, --files-without-match列出文件内容不符合指定的样式的文件名称-n, --line-number在输出前加上匹配串所在行的行号(文件首行行号为1)-o, --only-matching只显示匹配PATTERN 部分-q, --quiet或–silent不显示任何信息-r, --recursive此参数的效果和指定"-d recurse"参数相同-s, --no-messages不显示错误信息-v, --invert-match显示不包含匹配文本的所有行-V, --version显示版本信息-w, --word-regexp只显示全字符合的列-x, --line-regexp只显示整行严格匹配的行-y此参数的效果和指定"-i"参数相同

注:虽然选项很多,但不需要记住大部分选项,只需要知道该命令的一些常用用法即可。

使用

在文件中查找指定关键字

最常用的用法应该是在文件中查找指定关键字,语法格式如下:

# 语法grep 指定关键字 指定文件
# 示例grep"world" log.txt

在这里插入图片描述

注:待查找的指定关键字建议用双引号引起来,特别是在有空格的情况下。

显示除了匹配关键字之外的所有行

有时候我们想要显示那些除了匹配的关键字之外的所有行,可以加上

-v

选项:

# 语法grep -v 指定关键字 指定文件
# 示例grep -v "world" log.txt

在这里插入图片描述

显示行号

有时候我们希望看到匹配到的行在文件中的行号是多少,那么可以使用

-n

选项:

# 语法grep -n 指定关键字 指定文件
# 示例grep -n "world" log.txt

在这里插入图片描述

统计匹配到的总行数

如果我们想要获取匹配到的总行数,那么可以使用

-c

选项:

# 语法grep -c 指定关键字 指定文件
# 示例grep -c "o" log.txt

在这里插入图片描述

显示匹配行之前或之后几行的内容

除了显示匹配行之外,可能我们还需要显示匹配行之前几行或者之后几行的信息。那么可以使用

-A

-B

-C

选项:

# 语法grep -A 指定行数 指定关键字 指定文件
grep -B 指定行数 指定关键字 指定文件
grep -C 指定行数 指定关键字 指定文件
# 示例,表示显示 log.txt 文件中匹配到 "world" 的行及下面的 2 行内容grep -A 2"world" log.txt

在这里插入图片描述

注:

  • A 选项,是 After 的缩写,表示除了展示匹配行之外,还要展示出匹配行下面的若干行。如 -A 2 表示还展示匹配行下面 2 行的内容。
  • B 选项,是 Before 的缩写,表示除了展示匹配行之外,还要展示出匹配行上面的若干行。如 -B 2 表示还展示匹配行上面 2 行的内容。
  • C 选项,是 -A-B 选项的合体,表示除了展示匹配行之外,还要展示出匹配行上面和下面各若干行。如 -C 2 表示还展示匹配行上面 2 行和下面 2 行的内容。

忽略大小写

有时候匹配的时候,希望忽略掉大小写,让大写和小写字母都能被匹配到,可以使用

-i

选项:

# 语法grep -i 指定关键字 指定文件
# 示例grep -i "WORLD" log.txt

在这里插入图片描述

多文件查找

grep

命令是支持多文件查找的,显示结果它会输出匹配行内容和匹配行所在文件名。
在这里插入图片描述
如果想要只显示匹配内容在那些文件中,可以加上

-l

选项,得到的就是一个包含有匹配内容的文件列表,而如果使用

-L

选项,则会得到一个不包含有匹配内容的文件列表。
在这里插入图片描述

支持基本正则表达式

grep

命令是支持正则表达式的,但是是支持基本正则表达式。即在基本正则表达式(BRE)中,只承认“^”、“$”、“.”、“[”、“]”、“*”这些是元字符,所有其他的字符(如 “(”、“)”、“{”、“}”、“?”、“+”、“|” 等)都被识别为普通字符。语法如下:

# 语法grep 基本正则表达式 指定文件
# 示例,搜索 log.txt 文件中以 "h" 开头的行grep"^h" log.txt

在这里插入图片描述

支持扩展正则表达式

如果要使用扩展正则表达式,即支持 “(”、“)”、“{”、“}”、“?”、“+”、“|” 等元字符。那么需要加上

-E

选项,或者使用

egrep

命令:

# 语法grep -E 扩展正则表达式 指定文件
# 示例,搜索 log.txt 文件中包含至少一个 "h" 字符的行grep -E "h+" log.txt

在这里插入图片描述

精确搜索某个词

如果我们想要精确搜索某个词,那么使用

-w

选项。
在这里插入图片描述

以递归方式查找符合条件的文件

如果我们要查找指定目录下所有符合条件的文件,那么可以使用

-r

选项:

# 语法grep -r 指定关键字 指定目录名
# 示例,查找 /home/ 目录下所有包含 "hello" 字符串的文件grep -r "hello" /home/

在这里插入图片描述


本文转载自: https://blog.csdn.net/cnds123321/article/details/124967052
版权归原作者 二木成林 所有, 如有侵权,请联系我们删除。

“Linux命令之查找字符串grep”的评论:

还没有评论