grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

可用于数据查找定位

先列举出测试工作常用的grep命令和意义:

grep pattern file
grep -i pattern file 忽略大小写
grep -v pattern file 不显示匹配行
grep -o pattern file 只把每个匹配的内容独立的行显示
grep -E pattern file 使用拓展正则表达式,相当于egrep
#注意:grep 'a[0-9]\{10\}' 等同于 grep -E 'a[0-9]{10}'
grep  -B, --before-context=NUM  打印以文本起始的NUM 行
grep  -A, --after-context=NUM   打印以文本结尾的NUM 行
grep  -C, --context=NUM         打印输出文本NUM 行
grep pattern -r dir/ 递归搜索
grep -m1 匹配匹配中的第一个
grep -n 顺便输出行号
grep -P 可以让grep使用perl的正则表达式语法

BRE基本正则表达式:

  • ^开头 $结尾
  • [a-z] [0-9]区间,如果开头带有^表示不能匹配区间内的元素
  • *0个或多个
  • .表示任意字符

ERE扩展正则表达式

ERE扩展表达式是基本正则表达式(BRE)基础上的扩展

  • ?非贪婪匹配
  • + 一个或多个
  • () 分组
  • {} 范围约束
  • | 匹配多个表达式的任意一个

话不多说,先举例

假设有如下文件,名称为nginx.log

40.77.192.252 - - [05/Dec/2018:00:08:51 +0000] "GET /uploads/photo/2017/ed39a6f0-8111-48bc-88e0-604939b1dca1.png!large HTTP/1.1" 200 10065 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b" 0.000 0.000 .
220.181.108.187 - - [05/Dec/2018:00:09:04 +0000] "GET /topics/15275?locale=en HTTP/1.1" 200 28527 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 0.090 0.090 .
116.25.42.125 - - [05/Dec/2018:00:09:17 +0000] "GET /cable HTTP/1.1" 101 1473 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3622.0 Safari/537.36" 108.100 108.100 .
123.127.112.18 - - [05/Dec/2018:00:09:18 +0000] "GET /cable HTTP/1.1" 101 1017 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" 70.577 70.577 .
139.180.132.174 - - [05/Dec/2018:00:09:20 +0000] "GET /bbs.zip HTTP/1.1" 404 1264 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.011 0.011 .
139.180.132.174 - - [05/Dec/2018:00:09:12 +0000] "GET /__zep__/js.zip HTTP/1.1" 500 2183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.018 0.018 .
141.8.142.131 - - [05/Dec/2018:00:09:12 +0000] "GET /topics/14442 HTTP/1.1" 200 21980 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.195 0.195 .
220.181.108.181 - - [05/Dec/2018:00:09:13 +0000] "GET /syyair/following?locale=zh-CN HTTP/1.1" 200 13355 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 0.035 0.035 .
139.180.132.174 - - [05/Dec/2018:00:09:13 +0000] "GET /admin.rar HTTP/1.1" 401 50 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.006 0.006 .
40.77.167.1 - - [05/Dec/2018:00:09:17 +0000] "GET /topics/2547/replies/17243/reply_suggest HTTP/1.1" 404 3530 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 0.014 0.014 .
139.180.132.174 - - [05/Dec/2018:00:09:17 +0000] "GET /admin.tar.gz HTTP/1.1" 404 1264 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.052 0.052 .

找出500错误时候的上下文

chenshifengdeMacBook-Pro:~ chenshifeng$ grep -A 2 ' 500 ' nginx.log    #显示500错误及其后2行
139.180.132.174 - - [05/Dec/2018:00:09:12 +0000] "GET /__zep__/js.zip HTTP/1.1" 500 2183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.018 0.018 .
141.8.142.131 - - [05/Dec/2018:00:09:12 +0000] "GET /topics/14442 HTTP/1.1" 200 21980 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.195 0.195 .
220.181.108.181 - - [05/Dec/2018:00:09:13 +0000] "GET /syyair/following?locale=zh-CN HTTP/1.1" 200 13355 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 0.035 0.035 .
chenshifengdeMacBook-Pro:~ chenshifeng$ grep -B 2 ' 500 ' nginx.log    #显示500错误及其前2行
123.127.112.18 - - [05/Dec/2018:00:09:18 +0000] "GET /cable HTTP/1.1" 101 1017 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" 70.577 70.577 .
139.180.132.174 - - [05/Dec/2018:00:09:20 +0000] "GET /bbs.zip HTTP/1.1" 404 1264 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.011 0.011 .
139.180.132.174 - - [05/Dec/2018:00:09:12 +0000] "GET /__zep__/js.zip HTTP/1.1" 500 2183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.018 0.018 .
chenshifengdeMacBook-Pro:~ chenshifeng$ grep -C 2 ' 500 ' nginx.log    #显示500错误及其前后2行
123.127.112.18 - - [05/Dec/2018:00:09:18 +0000] "GET /cable HTTP/1.1" 101 1017 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" 70.577 70.577 .
139.180.132.174 - - [05/Dec/2018:00:09:20 +0000] "GET /bbs.zip HTTP/1.1" 404 1264 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.011 0.011 .
139.180.132.174 - - [05/Dec/2018:00:09:12 +0000] "GET /__zep__/js.zip HTTP/1.1" 500 2183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 0.018 0.018 .
141.8.142.131 - - [05/Dec/2018:00:09:12 +0000] "GET /topics/14442 HTTP/1.1" 200 21980 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 0.195 0.195 .
220.181.108.181 - - [05/Dec/2018:00:09:13 +0000] "GET /syyair/following?locale=zh-CN HTTP/1.1" 200 13355 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 0.035 0.035 .

1、先访问 博客主页,利用 grep href 过滤出所有包含 url 的内容。命令:

chenshifengdeMacBook-Pro:~ chenshifeng$ curl -s https://www.cnblogs.com/feng0815/ | grep -o "https:[^\"]*"
https://www.cnblogs.com/feng0815/rss
https://www.cnblogs.com/feng0815/rsd.xml
https://www.cnblogs.com/feng0815/wlwmanifest.xml
https://common.cnblogs.com/scripts/jquery-2.2.0.min.js
https://mathjax.cnblogs.com/2_7_5/MathJax.js?config=TeX-AMS-MML_HTMLorMML&v=20200504
https://www.cnblogs.com/
https://news.cnblogs.com/
https://q.cnblogs.com/
https://brands.cnblogs.com/
https://ing.cnblogs.com/
https://edu.cnblogs.com/
https://zzk.cnblogs.com/s
https://passport.cnblogs.com/GetBlogApplyStatus.aspx
https://msg.cnblogs.com/
https://home.cnblogs.com/
https://passport.cnblogs.com/GetBlogApplyStatus.aspx
https://home.cnblogs.com/
https://account.cnblogs.com/settings/account
https://account.cnblogs.com/signup/
......

再用grep命令匹配"200 OK"作为判断条件,筛选出成功的url并打印,然后将失败的 url 加上 ERR 标记也一起打印出来。
chenshifengdeMacBook-Pro:~ chenshifeng$ curl -s https://www.cnblogs.com/feng0815/ | grep -o "https:[^\"]*"| while read line;do curl -s -I $line | grep ' 200 ' && echo $line || echo ERR $line;done
ERR https://www.cnblogs.com/feng0815/rss
HTTP/1.1 200 OK
https://www.cnblogs.com/feng0815/rsd.xml
HTTP/1.1 200 OK
https://www.cnblogs.com/feng0815/wlwmanifest.xml
HTTP/1.1 200 OK
https://common.cnblogs.com/scripts/jquery-2.2.0.min.js
HTTP/1.1 200 OK
https://mathjax.cnblogs.com/2_7_5/MathJax.js?config=TeX-AMS-MML_HTMLorMML&v=20200504
HTTP/1.1 200 OK
https://www.cnblogs.com/
HTTP/1.1 200 OK
https://news.cnblogs.com/
HTTP/1.1 200 OK
https://q.cnblogs.com/
HTTP/1.1 200 OK
https://brands.cnblogs.com/
HTTP/1.1 200 OK
https://ing.cnblogs.com/
HTTP/1.1 200 OK
https://edu.cnblogs.com/
HTTP/1.1 200 OK
https://zzk.cnblogs.com/s
ERR https://passport.cnblogs.com/GetBlogApplyStatus.aspx
ERR https://msg.cnblogs.com/
HTTP/1.1 200 OK
https://home.cnblogs.com/
ERR https://passport.cnblogs.com/GetBlogApplyStatus.aspx
......

 
 

测试必会之 Linux 三剑客之 grep相关推荐

  1. 利器 | 测试必会之 Linux 三剑客 ( grep / awk / sed )

    本文为霍格沃兹测试学院优秀学员课程学习系列笔记,想一起系统进阶的同学文末加群交流. Linux 给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有 Windows 窗口界面直观方便.其实Linu ...

  2. linux 三剑客之grep

    linux 三剑客之grep的十六种用法## 文件目录及内容 ![在这里插入图片描述](https://img-blog.csdnimg.cn/088cb65ff95a4c52b59b6c3858d7 ...

  3. Linux三剑客老三 grep

    " linux三剑客,最常用的linux命令之grep--编程三分钟" grep 参数解释 grep擅长查找功能 在这里为了节省篇幅,我就不一一解释了,只介绍一些非常常用的组合. ...

  4. Linux三剑客之grep 与 egrep

    grep: Linux上文本处理三剑客 1 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) 2 sed:stream editor,文本编辑工具: 3 a ...

  5. linux三剑客试题,Linux三剑客(grep、sed、awk)详解

    Linux三剑客(grep.sed.awk)详解 前言:本文主要介绍一下Linux中最重要的三个命令,他们在业界被誉为"三剑客",它们分别是:awk,sed,grep.它们三个侧能 ...

  6. 咸鱼洽谈(linux三剑客之一grep)美好的周五生活开始了~

    咸鱼励志:咸鱼总要翻身,即使翻身还是咸鱼,但翻了身的咸鱼才会更加的咸. 目录 命令解析 语法 参数 示列 咸鱼之道 周五了,咸鱼又工作了一周,只想咸咸的过完这一周,然后继续下一周.但,我们要翻身啊,所 ...

  7. Linux三剑客:grep、sed、awk基础入门学习笔记

    今天分享的学习笔记内容是Linux三剑客,包括grep.sed.awk命令的基础知识,以及一些正则表达式相关内容. 正则表达式是对字符串和特殊字符操作的一种逻辑公式,就是用事先定义好的一些特定字符及这 ...

  8. linux三剑客(awk,grep,sed)

    简介 linux三剑客是指在linux操作系统中非常重要的三个命令,即awk,grep,sed这三个命令.它们都具有优秀的处理文件的功能. ①awk:多用于取列. ②grep:多用于查找或匹配文本. ...

  9. Linux 三剑客(grep、sed、awk)

    grep %全文搜索 Linux 命令三剑客,sed.grep.awk. sed:擅长数据修改. grep:擅长数据查找定位. awk:擅长数据切片,数据格式化,功能最复杂 基本正则表达式元字符 元字 ...

最新文章

  1. 【Android 文件管理】分区存储 ( 创建与查询图片文件 )
  2. 图解C/C++中函数参数的值传递、指针传递与引用传递
  3. delphi控制POS打印机
  4. DT-06 For MQTT
  5. 围棋人机大战属于计算机在什么方面的应用,《信息技术基础》第一章复习题库...
  6. 程序员开发的“逆天”软件
  7. 电脑用电量_为什么换了智能电表后,我家用电量一下子多了这么多呢?
  8. 单片机原理及应用 张鑫_单片机原理及应用
  9. c语言编程:实现数字的翻转
  10. winform 显示分隔控件_Winform分页控件之纯分页显示处理
  11. (纪中)2223. 母鸡下蛋(hen)
  12. Golang开发定时钉钉小机器人(基于gin+gorm)
  13. 如何快速无损地把flv格式文件转换为mp4格式(可在iPhone上播放)
  14. 服务器显示器多少寸合适,购买别冲动!先看多大的显示器适合你
  15. Vscode下载与配置(C语言)
  16. 上海市浦东新区37街镇最新版行政区域
  17. java 集合与泛型_java的集合和泛型的知识点归纳1
  18. mysql里hdr是什么的缩写_MySQL事务之-2
  19. 猜拳小游戏(while)循环
  20. Python系列 | 基于Tkinter图形化界面实现课堂点名系统

热门文章

  1. c沙箱与容器_orw技术分享
  2. 带bitlocker解密的pe_Win10使用BitLocker加密U盘|Win10自带BitLocker加密U盘
  3. 瑞萨CPU平台的GPIO模拟I2C之三:SPHE1002读写调用
  4. 中国手术标记笔市场趋势报告、技术动态创新及市场预测
  5. Centos 安装 KVM虚拟化工具 超云服务器 VMware
  6. 国产化适配之人大金仓数据库(三)项目适配
  7. 酒醉之后你最思念谁?
  8. java图片文字自动识别
  9. 菜鸡的2020年腾讯实习笔试
  10. 三字棋Java程序设计_六子棋Java程序设计.docx