加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux-shell脚本命令:grep命令简介 - Linux系统

发布时间:2014-12-04 23:37:03 所属栏目:Linux 来源:站长网
导读:[ grep简介: ] grep是用来过滤含有特定字符的行, 能使用正则表达式搜索文本, 它在数据中查找一个字符串时, 是以正行为单位进行数据选取的. 用法: grep [cinvs]
[ grep简介: ]

grep是用来过滤含有特定字符的行, 能使用正则表达式搜索文本, 它在数据中查找一个字符串时, 是以正行为单位进行数据选取的.

用法: grep [cinvs] 'pattern' file

例如: grep -n 'bbb' aaa.txt --color # 从文件aaa.txt中搜索关键词bbb, 并显示行号和高亮显示。

[ 常用选项: ]

-c:只输出匹配行的计数。

-i:不区分大小写(只适用于单字符)。

-n:显示匹配行及行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

[ 正则元字符: ]

grep可以结合正则表达式使用, 下面介绍一些常用的正则表达式过滤字符的用法。

:转义字符,忽略正则表达式中特殊字符的原有含义。

^ :匹配以某个字符串开始的行。

$ :匹配以某个字符串结束的行。

<:匹配单词的开始。

>:匹配单词的结束。

[ ]:在[]内某单个字符,如[A]即表示 A 符合要求。

[ - ]:属于[ - ]所标记的范围字符,如[A-Z],即A、B、C一直到Z都符合要求。

. :表示一定有1个任意字符。

* :前面字符可以出现任意次。

? :前面字符出现0次或1次。

+ :前面字符出现一次或多次。

[ 正则示例: ]

1. ^表示行开头

grep '^bbb' aaa.txt --color # 从文件aaa.txt中查找以bbb开头的行。

2. $表示行结尾

grep 'bbb$' aaa.txt --color # 从文件aaa.txt中查找以bbb结尾的行。

3. .表示单个字符, 它可以匹配除换行符之外的所有字符。

返回栏目页:http://www.bianceng.cn/OS/Linux/

grep 'bbb...' aaa.txt --color # 从文件aaa.txt中查找bbb后面含有三个字符的行, '点'可以匹配空格。

4. * 表示它前面的那个字符可以出现任意次

grep 'bbb.*' aaa.txt --color # 从文件aaa.txt中查找bbb后面有任意个字符的行。

5. + 表示它前面的那个字符至少要出现一次

grep -E 'bbb.+' aaa.txt --color # 从文件aaa.txt中查找bbb后面至少会出现一个字符的行。

6. ? 表示它前面的那个字符可以有也可以没有

grep -E 'bbbc?' aaa.txt --color # 从文件aaa.txt中查找存在bbb或bbbc的行。

注意: grep不支持 + 、? 这两个元字符, 如果想使用, 只能使用扩展的grep (egrep 或 grep -E)

7. [ ] 表示匹配一个字符, 出现在[ ]里面的字符都是或的关系

grep '^[Bb]bb' aaa.txt --color # 从文件aaa.txt中查找以Bbb或bbb开头的行。

grep '[0-9]' aaa.txt --color # 从文件aaa.txt中查找含有数字的行

grep -P 'd' aaa.txt --color # 从文件aaa.txt中查找含有数字的行, -P表示使用perl的正则表达式

d表示数字, D表示非数字

s表示空格或tab, S表示不是空格或tab

w表示任意字符(大小写字母、数字、下划线), W表示不是字母、数字、下划线。

注意: ^ 出现在 [ ] 外面的话表示'开头', 如果出现在 [ ] 里面的话表示'否定'

grep '^[^Bb]..' aaa.txt --color # 从文件aaa.txt中查找不是以B或b开头, 而且后面还有两个字符的行。

8. < 匹配单词的开头

grep '<Tom' aaa.txt --color # 从文件aaa.txt中查找单词以Tom开头的行。

9. > 匹配单词的结束

grep '>Tom' aaa.txt --color # 从文件aaa.txt中查找单词以Tom结尾的行。

10. 匹配某个单词, 而不是某个字符串的一部分

grep 'bTomb' aaa.txt --color # 从文件aaa.txt中查找含有单词Tom的行, 如果是aTomb之类的忽略掉。

11. 用()做标签, 后面想引用就用n (n是一个数字), 1表示第一个被引起来的

grep '(tom)...1' aaa.txt --color # 从文件aaa.txt中查找tom, 且它的后面有三个字符, 然后还有一个tom的行. 如: tomxxxtom

12. {n} 表示前面的字符要出现n次

grep 'tomx{3}' aaa.txt --color # 从文件aaa.txt中查找tomx, x要出现3次, 如: tomxxx

grep 'tomx{3,}' aaa.txt --color # 从文件aaa.txt中查找tomx, x至少要出现三次, 如tomxxx 或 tomxxxx

grep 'tomx{3,4}' aaa.txt --color # 从文件aaa.txt中查找tomx, x出现3次或4次, 如tomxxx 或 tomxxxx

作者:csdn博客 zdp072

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读