0
点赞
收藏
分享

微信扫一扫

Linux(四)之grep、egrep命令(文本三剑客完)

(文章目录)

前言

文本三剑客就是grep、sed和awk,听说只要掌握了它们,就没有什么文本处理可以难倒你啦。 那在之前我已经发过了 sed 以及 awk 的使用教程,感兴趣的小伙伴可以去看看呀。 言归正传,今天我们就把最后的 grep 以及其扩展 egrep 快速掌握吧

一、grep有什么用,和egrep是什么关系

grep命令全名为 Global search Regular Expression and Print out the line 而egrep则是其扩展版(Extended) grep 命令是一个字符串和模式匹配的工具,它可以显示多个文件中匹配的行。它也可以用来处理其他命令的管道输出,经常用于需要过滤文本的场景

二、如何使用

1.语法

grep命令的基本语法是:

grep [options] pattern [files]

其中pattern是要搜索的字符串或正则表达式,files是要搜索的文件,如果省略则从标准输入读取。 options是一些可选参数

ps:正则表达式还不熟悉的同学可以看看我之前的 “一表学会正则” 哦

2.选项

-i 不区分大小写 --ignore

-n 显示行号 --line-number

-c 只显示匹配行的数量 --count

-r 递归搜索子目录中的文件 --recursive

-o 只匹配指定内容,输出也是指定内容 --only-match

$ cat index.html |grep -o "html"
html
html
html
html

-v 取反,显示不匹配的内容,整行匹配,与正则中的 " [^] " 的颗粒度不同 --invert-match

-A 多显示匹配内容之后的n行 --after

-B 多显示匹配内容之前的n行 --before

-C 多显示匹配内容前后的n行 --center

$ egrep -C1 "dad" rex.txt  # 多显示了dad上下各1行
abbbbb`
dad
wqq

3.egrep扩展了什么

egrep 等同于 grep -E 其主要是对正则表达式中增加了以下元字符:

  • | 表示或,例如 egrep 'a|b' 表示匹配a或b
  • + 表示一次或多次重复,例如 egrep 'a+' 表示匹配一个或多个a
  • ? 表示零次或一次重复,例如 egrep 'a?' 表示匹配零个或一个a
  • () 表示分组,例如 egrep '(ab)+' 表示匹配ab的一个或多个重复
  • {} 表示出现次数,例如 egrep 'a{3}' 表示匹配a出现3次

在grep中使用它们不加-E的话,表达的则仅仅是其本身这个符号 从以下示例可以看出:

[root@localhost ~]$ echo abcbccc |grep "a(bc)+"	# 匹配失败
[root@localhost ~]$ echo abcbccc |egrep "a(bc)+"
abcbccc
[root@localhost ~]$ echo abcbccc |grep "abcbc{3}"	# 匹配失败
[root@localhost ~]$ echo abcbccc |egrep "abcbc{3}"
abcbccc
[root@localhost ~]$ echo abcbc{3} |grep "abcbc{3}"	# 匹配了{}本身
abcbc{3}

总结

以上就是今天要讲的内容,本文简单介绍了grep的使用,足以在日常中使用,而更复杂文本处理内容可以参考 awk 和 sed 的文章,有什么问题也欢迎大家评论和指正,感谢大家观看!

举报

相关推荐

0 条评论