首页 > 代码库 > linux每天一小步---grep命令详解
linux每天一小步---grep命令详解
1 命令功能
grep(global regular expression print全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2,我们利用这些返回值就可进行一些自动化的文本处理工作。
2 命令语法
grep 【选项】 模式pattern 【文件名file】 注:模式可为字符串或正则表达式
3 命令参数
-b 打印匹配行距文件头部的偏移量,以字节为单位
-o 与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位
-c 只输出匹配行的数量
-i 搜索时忽略字母大小写
-h 查询多文件时不显示文件名
-l 指列出符合匹配的文件名,而不列出具体的匹配行
-n 列出所有的匹配行,并显示该行行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-r 递归搜索,不仅搜索当前工作目录,而且搜索子目录
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-E 支持扩展的正则表达式
-F 将样式视为固定字符串
-w 显示包含匹配模式的所有行
-x 只显示匹配模式的行
4 正则表达式
^ 指定模式以什么开始,如^abc匹配所有以abc开始的行
$ 指定模式以什么结束。如abc$匹配所有以abc结束的行
. 匹配一个非换行符的字符。如a.c匹配a后接任意一个字符,然后是c的行
* 匹配任意零个或多个字符。如*abc匹配所有后跟abc字符的行
.* 匹配任意字符
[] 匹配一个指定范围内的字符,如[Aa]bc匹配Abc和abc
[^] 匹配一个不在指定范围内的字符。如[^Aa]bc匹配不包含A和a字母开头后紧跟bc的行
\(\) 将\(\)的模式存储在特殊的保留空间,常与\n(n为1至9的数字)组合使用。如\(ab\).*\1匹配ab组合的两次重现,中间可能存在任何数目的字符。
\{n,m\} 区间表达式,匹配在它前面的单个字符重现的次数区间。\{n\}指的是重现n次;\{n,\}则为至少重现n次,而\{n,m\}为重现n至m次。
5 使用范例
【1】查找指定进程
ps -ef| grep 进程名
【2】查找指定进程个数
ps -ef | grep -c 进程名
【3】从文件中查找关键词
grep ‘查找的关键词’ 文件名 如:grep ‘linux’ file1
【4】统计主机tcp连接数的行数
netstat -an | grep tcp |wc -l
作者:linux每天一小步
出处:http://www.cnblogs.com/westoslinux
如果你真心觉得文章写得不错,而且对你有所帮助,不妨帮忙“推荐"一下,您的“推荐”将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接!
linux每天一小步---grep命令详解