2021-07-29

grep(Global search Regular Expression and Print out the line)

"Global search" 表示全局搜索

"Regular Expression" 表示正则表达式

所以, grep 是一个可以利用 "正则表达式" 进行 "全局搜索" 的工具, grep 会在文本文件中按照指定的正则进行全局搜索,并将搜索出的行打印出来。

不使用正则表达式时也可以使用 grep ,只是当 grep 与正则表达式结合在一起时功能更强大。

grep命令的常用格式为:grep  [选项]  ”模式“  [文件]
grep家族总共有三个:grep,egrep,fgrep。
常用选项:
  -E :开启扩展(Extend)的正则表达式。
  -i :忽略大小写(ignore case)。
  -v :反选(invert),只打印没有匹配的,而匹配的反而不打印。
  -n :显示行号
  -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有 liker,而我搜寻的只是 like,就可以使用 -w 选项来避免匹配 liker
  -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用 -cv 选项是显示有多少行没有被匹配到。
  -o :只显示被模式匹配到的字符串。
  --color :将匹配到的内容以颜色高亮显示。
  -A n:显示匹配到的字符串所在的行及其后 n 行,after
  -B n:显示匹配到的字符串所在的行及其前 n 行,before
  -C n:显示匹配到的字符串所在的行及其前后各 n 行,context
# 测试文件
vi test.txt
man's youth is a wonderful thing: it is so full of anguish and of magic
and he never comes to know it as it is,until it has gone from him forever.
It is the thing he cannot bear to lose,
it is the thing whose passing he watches with infinite sorrow and regret,
it is the thing whose loss with a sad and secret joy,
the thing he would never willingly relive again,could it be restored to him by any magic.

1. 简单的字符串查询

# 查询包含 magic 的句子
grep magic test.txt # 使用 -n 选项,显示所属的行
grep -n magic test.txt # 使用 -w 选项,查询完整的单词
grep -nw is test.txt # 使用 -i 选项,忽略大小写
grep -n -i it test.txt # 使用 -c 选项,统计该单词出现的行数
grep -c it test.txt # 使用 -ci 选项,统计该单词忽略大小写情况下出现的行数
grep -ci it test.txt

2. 结合正则表达式

# 查询包含 magic 或 thing 的句子
grep -E "magic|thing" test.txt # 查询包含 i 以及后免的任意字符
grep -E 'i.*' test.txt

# 使用 -v 选项,排除选择的字符
# 查询没有 it 的行,并显示行号
grep -vn 'it' test.txt

# 使用 -A[num] , num可以是一个数字,查询选中句子的后 num 行
grep -A1 "It is the thing he cannot bear to lose," test.txt # 使用 -B[num] , num可以是一个数字,查询选中句子的前 num 行
grep -B1 "It is the thing he cannot bear to lose," test.txt # 使用 -C[num] , num可以是一个数字,查询选中句子的上下 num 行
grep -C1 "It is the thing he cannot bear to lose," test.txt
grep -C2 "It is the thing he cannot bear to lose," test.txt

该文参考了博主 flyor 的博客,地址为 https://www.cnblogs.com/flyor/p/6411140.html 。

最新文章

  1. Linux服务器SSH无密码访问
  2. 从零开始学 Java - 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问
  3. Jenkins_Maven_Git 持续集成及自动化部署 GentOS版
  4. 关于TP3.2微信开发那点事(基础篇)
  5. JAVA - ATM机程序
  6. Java语言的特点
  7. 转MYSQL学习(二) 运算符
  8. Oracle关闭session锁
  9. self,parent,this区别
  10. 186. Reverse Words in a String II
  11. foreach中引用 的问题
  12. 简单方便又实用的在线作图工具:ProcessOn
  13. [iOS]リソースファイルの取得方法
  14. 关于vs2005 __RPC__out __RPC__in 没有定义编译错误
  15. 如何复原Eclipse的Package Explorer
  16. java中log4j学习笔记
  17. SVG辅助标签
  18. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object
  19. mysql 字段唯一性问题
  20. 可访问性(Accessibility) => 无障碍功能

热门文章

  1. Linux中tomcat随服务器自启动的设置方法
  2. 为什么要学习Netty?
  3. Python基础之创建文件夹与删除文件夹。
  4. 在vue中使用微信jssdk的getLocalImgData怎么让多张图片显示
  5. CentOS 8.0 安装docker 报错:Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1
  6. WinUI 3学习笔记(2)—— 用ListView来展示集合
  7. Android面试6家一线大厂,这个问题是必问!
  8. [TensorFlow2.0]-Fashion-MNIST本地数据集及fit_generator()的使用
  9. JAVA基础语法:java编程规范和常用数据类型(转载)
  10. Linux下MySQL多实例部署记录