Linux系统三剑客grep及配合正则表达式使用范例.

1.grep
linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是(Global Regular Expression Print)表示全局正则表达式版本,它的使用权限是所有用户。
2.grep主要参数
[options]主要参数:
-a或–text 不要忽略二进制的数据。

-A<显示列数>或–after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。

-b或–byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

-B<显示列数>或–before-context=<显示列数>除了显示符合范本样式的那一列之外,并显示该列之前的内容。

-c或–context 计算符合范本样式的列数。

-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这两个分开的字符
(5)、如果搜索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

(6).显示行首为’the’的字符串 # grep -n
‘^the’ regular_express.txt

(7).显示行首是小写字符 grep -n ‘1’ regular_express.txt

(8).显示行尾为点 . 的那一行
grep -n ‘.$’ regular_express.txt

(9).显示5-9行数据 cat -An regular_express.txt |head -n 10 |tail -n 6
nl 9.txt|grep’^\s+5’ -A 4
(10).找出g??d字符串,起头g结束d的四个字符串 grep -n’g…d’ regular_express.txt

9.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
'goo
g’ 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值