shell -- grep

grep--文本搜索工具

 

1 grep的基础使用

用于在指定的文件列表中查找指定的匹配样本。

如果指定文件中的内容包含符合所指定的样式,那么含有样式的那一行会显示出来;未找到则不显示任何内容。

1.1 grep命令的基本使用方式

grep[选项][匹配样本][文件列表]

如果不指定文件名列表,或使用的文件名为“-”,那么grep指令会从标准输入设备读取数据进行匹配。

在使用grep命令时,一定要提供一个文件的检索路径,否则grep命令会一直等待用户输入,直至程序中断

 

1.2 grep选项

选项名称作用
-c只输出匹配行的计数,不显示匹配的内容
-i不区分大小写(只适用于单个字符)
-h查询多文件时不显示文件名
-n显示匹配行及行号
-s不显示不存在或无匹配文件的错误信息
-v显示不包含匹配的所有行
-E允许使用扩展模式匹配

其他的选项可以通过

man grep

进行查看。

 

在使用grep命令实现检索多个关键字时,其选项一般使用大写的字符E。

grep -E "hello|Hello" xxx.txt

 

2 grep和正则表达式

表达式可以使用单引号或者双引号括起来, 区别是单引号无法引用变量而双引号可以。

[]

匹配一个指定范围内的字符 ,[Gg]rep'匹配Grep和grep

为了在文本检索过程中,使正则表达式的匹配能够顺利进行,正则表达式需要使用引号括起来

grep -E "#[h,H]e[l,L]*" xxx.sh
grep -E "*[1-9][1-9].[A,Z]*" xxx.sh

^ $

脱字符^ 匹配行首

美元符号$ 匹配行尾

匹配空行的时,将脱字符和美元符号放在一起使用,从而使得行首和行尾之间没有其他的字符。

# 匹配空行
grep -c '^$' xxx.txt

可以应用于查找文件中空行的行数。

*

星号* 除了匹配多个文件之外,还可以用来匹配零个或者多个字符

.

点号.匹配单个字符,这个字符可以是任意的字符。

{}

大括号{} 可用于限定某些字符出现的次数。只有该字符出现的次数匹配成功了,那么整个匹配才算成功。

# 匹配字符1至少出现2次
grep "1\{2\}" xx.txt
# 匹配字符1出现1-2次
grep "1\{1,2\}" xx.txt

“{}”在正则表达式中属于特殊符号,因此需要使用转义字符“\”将符号"{}"转义成普通符号。

\

转义字符\ 在正则表达式中如果需要将特殊符号进行匹配,那么需要在特殊符号前面加上'\'进行转义,然后特殊字符就能像普通字符一样进行匹配了。

 

3 grep命令的拓展使用

类名的使用

使用grep命令的时候,除了使用正则表达式之外,还可以使用国际模式匹配的类名来代替正则表达式。

国际模式匹配的类名将正则表达式中的一些常用字符进行了“封装“,使用特定的字符进行表示,从而使用的更加方便。

常用的类名和正则表达式的关系如下表:

国际模式匹配的类名对应的正则表达式作用
[[:upper:]][A-Z]匹配大写字符
[[:lower:]][a-z]匹配小写字符
[[:digit:]][0-9]匹配数字
[[:alnum:]][0-9a-zA-Z]匹配字符和数字
[[:space:]]空格或TAB匹配空格
[[:alpha:]][a-zA-Z]匹配字符,包括大小写字符

egrep

egrep = grep -E

egrep[选项][匹配模板][查找文件列表]

egrep使用方式于grep相似

egrep存在一些grep命令没有的选项,如下表

选项/符号作用实例
加号+匹配一个或多个字符'a+[a-z]+[0-9]'
(|)匹配字符串(root|unbntu)

扩展表达式: + 匹配一个或者多个先前的字符, 至少一个先前字符. ? 匹配0个或者多个先前字符. a|b|c 匹配a或b或c () 字符组, 如: love(able|ers) 匹配loveable或lovers. (..)(..)\1\2 模板匹配. \1代表前面第一个模板, \2代第二个括弧里面的模板. x{m,n} =x{m,n} x的字符数量在m到n个之间.

 

fgrep

fgrep = grep -f

fgrep常用于为文件搜索字符串

一般将模式当作固定字符串来处理,因此其处理速度很快,但是其搜索功能与grep相比,相对较弱。

fgrep[选项][匹配模板][查找文件列表]

处理的结果,如果找到符合要求的数据,那么该命令就会返回0;如果未找到匹配的内容,其返回为1。如果返回值是大于1的数,那么该命令执行过程中会发生语法错误,或者是查找的目标文件不存在,需要对命令重新编写。

在使用fgrep命令时,还需要将每行输入数据限制在2048个字节。一个段落一般限制在5000个字符的长度,并且部分选项不能重叠使用,否则会引起标志位的覆盖。

fgrep "hao" *.txt

在fgrep命令中,匹配的模板都被看作是字符串,因此,所有的元字符都作为普通字符来处理。

 

4 grep命令使用实例

 

1 目录搜索--查找指定目录或文字

查找某些文件放在哪个目录中,或是在文件中存在哪些内容。

如果仅查找文件的位置,可以使用find命令。

# 在当前目录文件中朝朝文件xxx.txt
ls -l | grep xxx.txt

 

2 使用ps命令检索特定的进程

ps -ef | grep squid

 

参考资料

https://blog.csdn.net/xiaoxinyu316/article/details/46729443

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值