每天学点Linux之grep命令的使用

grep命令的使用

前言

grep命令是Linux中非常重要的一个命令,主要用于文本查找,也就是在一个文本中提取出我们所需要的信息,grep可以使用正则表达式来辅助匹配,极大地提高了匹配的效率。

基本的正则表达式

元字符

所谓的元字符,就是正则表达式中用与代表其他字符的字符,比较常使用到的内容如下所示:

[a-z][0-9][A-Z][a-zA-Z]
[:space:]:空白字符集、[[:space:]]:空白字符集中的一个
[:punct:]:标点
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
.:任意字符
[ABC]:代表中括号中的任意一个字符(这里是ABC中任意一个)

匹配次数

*:匹配前面字符任意次
  .*:则可以代表任意字符任意次
?:匹配前面字符1次或0次
+:匹配前面字符至少一次
{m,n}:匹配前面字符至少m次,至多n次
  {1,}:匹配前面字符至少一次
  {1,3}:匹配前面字符1-3次
  这里使用的时候需要注意,逗号前后不能加空格

位置锚定

^:锚定行首
$:锚定行尾
\bWORD 或者 \<WORD:锚定词首
WORD\b 或者 WORD\>:锚定词尾

特殊字符

():小括号用于分组,主要用于实现后向引用
\1、\2、\3 ...:后向引用
| :或者,用于实现多选一,类似于[]的作用
  C|cat:匹配的是C或者cat
  (c|C)at:匹配的是cat或者cat

grep命令的使用

grep的语法

grep命令的用法如下所示
# grep [OPTION] PATTERN FILE

选项的内容可以有:
  -i:忽略大小写
  --color:高亮显示匹配到的文本
  -v:反向查找,显示没有被匹配到的文本
  -o:只显示匹配到的文本
  -E:使用扩展的正则表达式,一般均使用扩展的正则表达式
  -A n:显示匹配到的行以及前n行
  -B n:显示匹配到的行以及后n行
  -C n:显示匹配到的行以及前后各n行

PATTERN则为需要匹配的正则表达式
FILE为所需要匹配的文本

典型查找例子

为了更好地演示效果,这里新建一个文件 testGrep,内容如下所示

a
ab
aab
hello
world
cccccccccccccccc
123aaaa1223
aaa22233aaaa
bbb 222 sss -- --
aa*888dad--6$#

简单匹配以及匹配的结果如下所示

1、匹配含有a
  # grep a grepText
  匹配结果:
    a
    ab
    aab
    123aaaa1223
    aaa22233aaaa
    aaa 222 sss -- --
    aa*888dad--6$#
2、匹配至少含有两个a
  # grep -E a\{2,\} grepText
    ! 这里使用反斜线主要是花括号在shell中有特殊含义,所以这里需要对其进行转义
  匹配结果:
    aab
    123aaaa1223
    aaa22233aaaa
    aaa 222 sss -- --
    aa*888dad--6$#
3、匹配含有空格的内容
  # grep -E .*[[:space:]].* grepText
  匹配结果:
    aaa 222 sss -- --
4、匹配以a开头并且以a结尾的行
  # grep -E ^a.*a$ grepText
  匹配结果:
    aaa22233aaaa

总结

本小节主要学习了grep命令的使用,包含了常见的正则表达式的元字符等,需要注意的是,grep命令有两个兄弟命令,分别是egrep,fgrep,其中egrep等价于grep -E,fgrep则是不使用正则表达式来提高效率,Linux的学习之路还在继续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值