【shell】grep命令及常见用法
来源:互联网 发布:adobe encoder mac 编辑:程序博客网 时间:2024/06/05 20:44
【背景】
grep的全称是global regular expression print,是linux中最强大的文本搜索命令之一,常用于搜索文本文件中是否含有某些特定模式的字符串。该命令以行为单位读取文本并使用正则表达式进行匹配,匹配成功后打印出该行文本。
【命令格式】
grep [option] "string_to_find" filename
常见选项:
(1)-i:忽略搜索字符串的大小写
(2)-v:取反,即输出不匹配的那些文本行
(3)-n:输出行号
(4)-l:输出能够匹配模式的文件名,相反的选项为-L
(5)-q:静默输出
选项是可选的,根据实际需求进行选择即可
string_to_find为需要匹配的模式,可以填写字符串或者正则表达式
filename为需要查找的文件的名称
【常见用法】
1.统计文件中能够匹配的行数
涉及选项:
(1)-c:计算匹配成功的行数
例子:
(1)输出text.txt中含有hello字符串的行的数量:
grep -c "hello" text.txt
2.统计文件中匹配的数量
涉及选项:
(1)-o:只输出匹配到的文本部分
例子:
(1)输出text.txt中含有hello的数量:
grep -o "hello" text.txt | wc -l
注意这个例子和上个的区别,-c选项在遇到一行中多次匹配正则表达式的情况时只是认为这一行匹配成功,而不会计算匹配成功的次数
3.递归搜索
涉及选项:
(1)-r:grep的参数filename为目录时可以加上本选项表示递归搜索
例子:
(1)从test_dir开始递归查找含有hello的行:
grep -r "hello" test_dir
这个选项很适用于在工程中搜索某些特定字符串
4.匹配多个正则表达式
涉及选项:
(1)-e:该选项加上正则表达式就是一个需要匹配的模式
例子:
(1)找出匹配hello或者world的行:
grep -e "hello" -e "world" test.txt
5.指定/排除文件
涉及选项:
(1)--include:指定需要搜索的文件
(2)--exclude:排除需要搜索的文件
(3)--exclude-dir:排除需要搜索的目录
例子:
(1)搜索src目录中.c和.cpp文件中的含有main的行:
grep -r "main" ./src --include *.{c,cpp}
(2)搜索src目录中含有main的行,但不搜索readme文件:
grep -r "main" ./src --exclude "readme"
(3)搜索src目录中含有main的行,但不搜索.git文件夹:
grep -r "main" ./src --exclude-dir ".git"
6.零值字节
涉及选项:
(1)-Z:设定输出的文本之间以'\0'作为分隔符
例子:
(1)删除含有hello字符串的文件:
grep -r "hello" ./src -lZ | xargs -0 rm -f
注意如果不使用-Z选项,则输出的文件名之间以空格符分隔。那么如果有个文件的文件名本身就是包含空格的,则该文件会被认为是两个文件,就可能造成误删
- 【shell】grep命令及常见用法
- grep命令常见用法
- grep命令常见用法
- grep 命令常见用法
- 【shell】find命令及常见用法
- 【shell】sed命令及常见用法
- 【shell】awk命令及常见用法
- 【shell】cut命令及常见用法
- 【shell】tr命令及常见用法
- grep命令参数及用法
- grep命令参数及用法
- linux shell用法(7)-- grep命令
- linux grep命令参数及用法详解---管道命令grep
- linux grep命令参数及用法详解---管道命令grep
- linux grep命令参数及用法详解---管道命令grep
- 【shell】xargs及常见用法
- linux grep命令参数及用法详解
- 【linux】grep命令参数及用法详解
- [记录]Java虚拟机 - 待续
- Lintcode87 Remove Node In Binary Search Treesolution 题解
- 携程Android App插件化和动态加载实践
- jenkins上的常用插件
- 基于贪心算法的几类区间覆盖问题:(侵删)
- 【shell】grep命令及常见用法
- Intellij Idea2017模块管理
- 阿里云申请的免费证书,配置到Tomcat,实现https访问
- 每日一刷——删除无头链表非尾结点&倒序打印链表
- scala不使用new关键字创建对象实例
- 大学计算机基础--2
- 状态模式
- 538. Convert BST to Greater Tree
- 源码图:HashMap+Hashtable区别