Linux shell之grep(《Linux与Unix shell编程指南》读书笔记)
来源:互联网 发布:杭州美容院软件 编辑:程序博客网 时间:2024/05/18 06:47
1.说明
本文参考摘录自《Linux与Unix shell编程指南》
2.基本概念
(1)grep(全局正则表达式版本)允许对文本文件进行模式查找,如果找到匹配模式,grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。
一般格式:grep [选项] 基本正则表达式 [文件]
//本文的测试用例
(2)常用的grep选项有:
-c 只输出匹配行的计数。-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
例:
1.行匹配(输只出匹配行的计数)
$ grep -c "48" data.f
$ 4
2.行数(显示匹配行及行号)
$ grep -n "48" data.f
(3)grep和正则表达式:
双引号:在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。
//这样做有两个原因,一是以防被误解为 shell命令,二是可以用来查找多个单词组成的字符串,例如:“jet plane”,如果不用双引号将其括起来,那么单词 plane将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息。
//在调用变量时,也应该使用双引号,诸如:grep“$MYVAR”文件名,如果不这样,将没有返回结果。
单引号:
//在调用模式匹配时,应使用单引号。
使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止grep中使用的专有模式与一些shell命令的特殊方式相混淆。
例:
1.$grep '48[34]' data.f //483 484
2.$grep '^[^48]' data.f //行首不是48
3.$grep 'K...D' data.f //抽取以L开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符
4.$grep '[A-Z][A-Z]..C' data.f //头两个是大写字母,中间两个任意,并以C结尾
5.$grep '5..199[6,8]' data.f //先查询所有以5开始以1996或1998结尾的所有记录。使用模式5..199[6,8]
6.$grep '^[0-9][0-5][0-6]' data.f //以行首开始第一个字符为0到9之间,第二个字符在0到5之间,第三个字符在0到6之间
7.$grep -E '219|216' data.f //匹配“与”或者“或”模式,grep命令加-E参数,这一扩展允许使用扩展模式匹配
8.$grep 'conftroll\.conf' myfile //匹配特殊字符,查询文件名conftroll.conf
9.$grep '[0-9]\{3\}\.[0-9]\{3\}\.' ipfile //查看nnn.nnn网络地址
10.类名
//grep允许使用国际字符模式匹配或匹配模式的类名形式
类名及其等价的正则表达式
[[:upper:]][A-Z] [[:lower:]][a-z][[:digit:]][0-9] [[:alnum:]][0-9a-zA-Z][[:space:]]空格或tab键[[:alpha:]][a-zA-Z]
$grep '5[[:upper:]][[:upper:]]' data.f
(4)查询多个文件
例:
1.如果要在当前目录下所有.doc文件中查找字符串“sort”,方法如下:
$ grep "sort"*.doc
2.或在所有文件中查询单词“sort it”
$ grep "sort it" *
(5)命令行输出结果作为grep的"输入"
上诉的例子都是从文本文件抽取和过滤,下面的例子是以命令行输出作为操作对象。
$ps -ef | grep -v "grep" | grep "processname"
//目的:查看"processname"进程是否正在运行
//ps -ef,e:参数显示所以进程,f:全格式
//在grep命令中使用-v选项可丢弃ps命令中的grep进程
3.小结
如果要通过文件快速查找字符串或模式,并打印包含模式的所有行,grep是一个很好的选择。
- Linux shell之grep(《Linux与Unix shell编程指南》读书笔记)
- Linux shell之正则表达式(《Linux与Unix shell编程指南》读书笔记)
- Linux shell之awk(《Linux与Unix shell编程指南》读书笔记)
- 读书笔记之:LINUX与UNIX Shell编程指南
- Linux与Unix Shell编程指南 读书笔记 (3) 正则表达式与grep
- 《LINUX与UNIX SHELL编程指南》读后感
- 《Linux与unix Shell编程指南》 总结
- E:\linux与unix shell编程指南
- Linux与unix shell编程指南
- LINUX与UNIX Shell编程指南
- LINUX与UNIX Shell编程指南
- 《Linux与unix Shell编程指南》 总结
- Linux与Unix Shell编程指南 读书笔记(1)文件安全和find命令
- 《linux与unix shell 编程指南》整理(1)
- 《linux与unix shell 编程指南》整理(2)
- 《linux与unix shell 编程指南》整理(3)
- 《linux与unix shell 编程指南》整理(4)
- 《linux与unix shell 编程指南》整理(5)
- emWin - BMP图片显示
- ffmpeg源码编译
- 关于设计模式单例模式
- MySQL 获得当前日期时间\时间戳 函数
- Thinking_2_酸甜苦辣咸的2016
- Linux shell之grep(《Linux与Unix shell编程指南》读书笔记)
- 怎样创建FTP服务器
- 微信小程序之(天气预报)
- java中Exception和RuntimeException
- xml-创建xml
- nfs挂载错误wrong fs type, bad option, bad superblock
- 用户认证和用户授权
- 360APP加固软件使用
- 常见室内定位技术对比,你了解吗?