您的位置:首页 > 运维架构 > Linux

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

2017-06-05 23:33 405 查看

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的学习之路还在继续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息