grep命令

grep文本过滤

linux三剑客之一,文本正则表达式搜索工具,并打印匹配内容,支持多文件查找

常用参数

格式:grep [选项] [模式] [文件]
	-c   只输出匹配行数量
	-e   支持多个关键字搜索
	-h   查询多文件不显示文件名
	-i   搜索时忽略大小写
	-l   只列出符合匹配的文件名,不显示具体的匹配行
	-n   输出匹配行并显示行号
	-o   只显示匹配到的字符串
	-q   只输出搜索状态,0为成功,1为未搜索到满足的行,2为出现错误
	-r   递归搜索不仅搜索当前目录,还搜索子目录
	-v   显示不包含匹配文本的所有行
	-w   搜索都是整词,不能是单词的一部分,含有字符串的整行都输出
	-x   整行匹配,只含有被搜索的字符串的行
	-A   显示匹配的字符串所在行及其后n行
	-B   显示匹配的字符串所在行及其前n行
	-C   显示匹配的字符串所在行及其前后n行
	-E   支持扩展的正则表达式
	-F   不支持正则表达式,按照字符串字面意思匹配

通配符

^	 行首定位符	 /^my/  匹配所有以my开头的行
$	 行尾定位符	 /my$/  匹配所有以my结尾的行
.	 匹配除换行符以外的单个字符	 /m..y/  匹配包含字母m,后跟两个任意字符,再跟字母y的行
*	 匹配零个或多个前导字符	 /my*/  匹配包含字母m,后跟零个或多个y字母的行
[]	 匹配指定字符组内的任一字符	 /[Mm]y/  匹配包含My或my的行
[^]	 匹配不在指定字符组内的任一字符	 /[^Mm]y/  匹配包含y,但y之前的那个字符不是M或m的行
&	 保存查找串以便在替换串中引用	 s/my/**&**/  符号&代表查找串。my将被替换为**my**
\<	 词首定位符	 /\<my/  匹配包含以my开头的单词的行
\>	 词尾定位符	 /my\>/  匹配包含以my结尾的单词的行
x\{m\}	 连续m个x	 /9\{5\}/ 匹配包含连续5个9的行
x\{m,\}	 至少m个x	 /9\{5,\}/  匹配包含至少连续5个9的行
x\{m,n\}	 至少m个,但不超过n个x	 /9\{5,7\}/  匹配包含连续5到7个9的行

示例

grep keyword test.txt  //输出含关键字”keyword”的行
grep "keyword root"  test.txt  //关键字中含有空格需要用双引号
grep keyword test.txt word.txt  //多文件查找含关键字的行,相似文件名可用通配符
grep -c keyword test*.txt  //输出文件中含关键字的行数量,不输出内容,多文件会显示文件对应名称
grep -e keyword -e keyword  test.txt  //一行中多个关键字匹配,关键字之间或关系
grep -h keyword test*.txt  //输出内容,但不显示对应文件的名称
grep -n keyword test*txt  //输出多文件中含关键字的内容,并显示在对应文件中的行号
grep -v "hello" test.txt  //输出不含hello的行
grep -vc keyword test.txt  //输出文件中不含关键字的行数量
grep -i keyword test.txt  //不区分大小写进行匹配,输出对应行
grep -l keyword test.txt  //只输出含关键字的文件名,不输出内容
grep -s keyworde test.txt  //不输出因关键字或文件不存在出现的错误信息
grep keyword  *    //对当前目录下的所有文件进行匹配关键字
grep -r file * //grep默认只对当前目录搜索,r选项可以对当前目录和子目录搜索
grep -w keyword test.txt  //搜索整词所在的行
grep "\<keyword\>"  //精确匹配,等价上面
grep -x "keyword,root,tty" text.txt  //整行进行匹配
grep -q keyword test.txt  //不输出任何结果,以退出状态表示搜索成功,状态0为成功 
grep ^-  test.txt  //匹配行首为-的行
grep -n [Rr]pom test.txt  //不区分关键字中的r大小写
grep '\-\{3}\'  test.txt  //匹配开头-重复3次的行
grep -o  "keyword"  test.txt  //只显示keyword字符串
grep -A 2 "keyword"  test.txt  //显示匹配关键字后2行
grep -B 2 "keyword"  test.txt  //显示匹配关键字前2行
grep -C 2 "keyword"  test.txt  //显示匹配关键字的前后2行
grep -E (net){3}  test.txt  //扩展正则表达式
grep -Eo  "[0-9]+"  test.txt  
ifconfig | grep -o "[0-9.]\{7,\}"  | head -n 1  //只显示0-9或.匹配的字符段,数字和.组成7个段
ifconfig | grep -o "[[:digit:]]\{1,3\}.[[:digit:]]\{1,3\}.[[:digit:]]\{1,3\}.[[:digit:]]\{1,3\}"
df | grep "/dev/sd" | grep -o "[0-9]\{1,3\}%" | grep -o "[0-9]\+"
grep "\(net\)\{3\}"  //整词net出现三次netnetnet
grep "\(net\)\{3\}.*\(len\)\+\1"  //net出现3次中间任意长度的任意字符len至少出现1次,\1为后向引用前面第一次匹配串net对应结果
grep "^\(.*\):.*\1&"  //匹配前后字符对应相同的行
grep "a\| b"   //符号\|表示或
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值