grep用法

grep
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2、grep主要参数
[options]主要参数:
-a或–text 不要忽略二进制的数据。
-A<显示列数>或–after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或–byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或–before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或–count 计算符合范本样式的列数。
-C<显示列数>或–context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或–directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式>或–regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或–extended-regexp 将范本样式为延伸的普通表示法来使用。
-f<范本文件>或–file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或–fixed-regexp 将范本样式视为固定字符串的列表。
-G或–basic-regexp 将范本样式视为普通的表示法来使用。
-h或–no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H或–with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
-i或–ignore-case 忽略字符大小写的差别。
-l或–file-with-matches 列出文件内容符合指定的范本样式的文件名称。
-L或–files-without-match 列出文件内容不符合指定的范本样式的文件名称。
-n或–line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或–quiet或–silent 不显示任何信息。
-r或–recursive 此参数的效果和指定“-d recurse”参数相同。
-s或–no-messages 不显示错误信息。
-v或–revert-match 反转查找。
-V或–version 显示版本信息。
-w或–word-regexp 只显示全字符合的列。
-x或–line-regexp 只显示全列符合的列。
-y 此参数的效果和指定“-i”参数相同。
–help 在线帮助。
3、grep实用案例
1、搜寻1.txt文件中字符串"the" 注: n为显示行号 grep -n ‘the’ regular_express.txt
2、反向搜寻特定字符串"the" grep -vn ‘the’ regular_express.txt
3、取得任意大小写"the"的这个字符串 # grep -in ‘the’ regular_express.txt
4.利用括号 [] 来搜寻集合字符 搜索test或taste这两个单词
grep -n ‘t[ae]st’ regular_express.txt
这样其实就是在找t[a]st和t[e]st这两个分开的字符
第4题延伸:
如果搜索有 oo 的字符时,则可以使用:# grep -n ‘oo’ regular_express.txt
如果搜索oo时不想搜到 oo 前面有 g 的话,我们可以利用反向选择[^]来达成:
grep -n ‘[^g]oo’ regular_express.txt
如果搜索oo前面不想有小写字符,则:grep -n ‘[^a-z]oo’ regular_express.txt
注: 大写英文/小写英文/数字 可以使用 [a-z]/[A-Z]/[0-9]等方式来书写,也可以写在一起[a-zA-Z0-9]表示要求字符串是数字以及英文
如果我们要取得有数字的那行,则:# grep -n ‘[0-9]’ regular_express.txt
5、显示行首为’the’的字符串 # grep -n ‘^the’ regular_express.txt
6、显示行首是小写字符 grep -n ‘1’ regular_express.txt
7、显示行尾为点 . 的那一行 grep -n ‘.$’ regular_express.txt
8、显示5-9行数据 cat -An regular_express.txt |head -n 10 |tail -n 6
nl 9.txt|grep ‘^\s+5’ -A 4
9、找出g??d字符串,起头g结束d的四个字符串 grep -n ‘g…d’ regular_express.txt
10、o代表空字符(就是有没有字符都可以)或者一个到N个o字符,所以
grep -n 'o
’ regular_express.txt就会把所有行全部打印出来,
11、.oo代表o+空字符或者一个到N个o字符,所以grep -n 'oo’ regular_express.txt就会把o,oo,ooo等的行全部打印出来
12、"goog"代表gog,goog,gooog…等 grep -n 'goog’ regular_express.txt
13、找出含g…g字符串的行grep -n ‘g.*g’ regular_express.txt
14、找出含有数字的行 grep -n ‘[0-9]+’ regular_express.txt 或
grep -n ‘[0-9]’ regular_express.txt

15、找出含两个o的字符串 grep -n ‘o{2}’ regular_express.txt
16、找出g后含2到5个o然后以g结尾的字符串
grep -n ‘go{2,5}g’ regular_express.txt
17、找出g后含2以上的o然后以g结尾的字符串
grep -n ‘go{2,}g’ regular_express.txt

4、grep 与管道
grep 的输入不一定都是文件,它也常常从管道读取输入
[root@yum test]# ls
grep.txt sed1.txt sed2.txt sed.txt
[root@yum test]# ls | grep “grep”
grep.txt
[root@yum test]# ls | grep “^gr”
grep.txt
说明:
ls 的命令的输出通过管道传给 grep。输出结果字母 gr 开头的所有行都被打印出来了,
也就是说,被选中的目录被打印出来了
注意:经过测试\d不能使用如果想使用数字用[0-9] 还有,要使用正则表达式的?+ {}记得前边加\


  1. a-z ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值