常用Linux文件处理命令之grep

语法

grep [option] ‘PATTERN’ FILE
该命令就是使用PATTERN模版来对FILE进行匹配以获取我们需要的内容

正则表达式

定义

用元字符和基本字符组合的一种用来描述字符串的匹配模式。
通俗来讲就是,使用一些具有特殊意义的字符来匹配出我们需要的字符。

扩展正则表达式

符号含义
.匹配任意字符
匹配次数
*匹配任意个字符
?前一个字符出现≤1次
+前一个字符出现≥1次
{n,m}前一个字符出现n到m次
位置锚定
^匹配开头
$匹配结尾
^$匹配空白行
单词边界
\<单词左边界
\>单词右边界
\b单词边界
分组
()将某些字符作为整体,可向后应用
[]匹配字符组中任意字符

Perl正则表达式

符号含义
\w英文字符(数字+字符+下划线)
\W非英文字符(数字+字符+下划线)
\d数字
\D非数字
\s空白符(空格,制表符)
\S非空白符

选项

-P 支持扩展正则表达式

例子1 .符号

cat test.txt | grep -E '.'

仅使用’.'符号匹配。发现匹配所有,是因为正则默认贪婪匹配,即尽量多匹配相关内容。
在这里插入图片描述

例子2 数量匹配

cat test.txt | grep -E 'a?'

匹配次数,发现没有a字符的行也出现,说明‘?’包含0个情况
在这里插入图片描述
在这里插入图片描述


cat test.txt | grep -E 'a+'

发现只有一个以上的a符号的行出现
在这里插入图片描述


cat test.txt | grep -E 'q{2,4}'

匹配2到4的q字符行
在这里插入图片描述

例子3 位置锚定

cat test.txt | grep -E '^the.*re'

在这里插入图片描述

匹配the开头,中间任意个任意字符,re结尾的字符行
在这里插入图片描述

例子4 单词边界

cat test.txt | grep -E '\<the\>'

匹配出the单词,前后均不能有其他字符
在这里插入图片描述


cat test.txt | grep -E '\bthe\b'

与上一个例子同理
在这里插入图片描述

例子5 分组引用

cat test.txt | grep -E '(the).*\1'

the作为分组1被引用
在这里插入图片描述


cat test.txt | grep -E '(the).*\1'

(1)作为分组1,为后面的\1引用,(.*)作为分组2引用,其中(.*)和分组2需要一样。
在这里插入图片描述


cat test.txt | grep -E '([a-z])(.*)\2\1'

该例子与前面一致,但是[a-z]字符组作为分组1被使用。
在这里插入图片描述

-E 支持Perl的正则表达式

例子

cat test.txt | grep -P '(\d).*\1$'

\d匹配单个数字,并被引用。
在这里插入图片描述


ldd /bin/ls | grep -P '/lib/.*\s'

\s匹配空白符号,正好获取完整依赖文件
在这里插入图片描述

-n显示行号

ldd /bin/ls | grep -P -n '/lib/.*\s'

与上面例子相同,但是显示了匹配内容在输出中的行号
在这里插入图片描述

其他选项自行测试

-i 忽略大小写

-A N 输出匹配内容和前N行

-B N 输出匹配内容和后N行

-C N 输出匹配内容和前后N行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值