grep命令详解

转载自:https://www.cnblogs.com/wangcp-2014/p/5146335.html

1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式
grep [options]

3.主要参数
[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   在线帮助。


pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

4.grep命令使用简单实例
greptestd<br>dtest<br> g r e p ‘ t e s t ′ d ∗ < b r > 显 示 所 有 以 d 开 头 的 文 件 中 包 含 t e s t 的 行 。 < b r > grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
grep[az]{5}aa<br>5<br> g r e p ‘ [ a − z ] { 5 } ′ a a < b r > 显 示 所 有 包 含 每 个 字 符 串 至 少 有 5 个 连 续 小 写 字 符 的 字 符 串 的 行 。 < b r > grep ‘w\(es\)t.*\1′ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

5.grep命令使用复杂实例
假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:
grepmagic/usr/src/Linux/Doc/<br>sysrq.txt:HowdoIenablethemagicSysRQkey?<br>sysrq.txt:HowdoIusethemagicSysRQkey?<br>sysrp.txtSysRQ<br>grepgrep<br>grep:sound:Isadirectory<br>使grep<br>grepr<br>grepdskip<br>less<br> g r e p m a g i c / u s r / s r c / L i n u x / D o c / ∗ < b r > s y s r q . t x t : ∗ H o w d o I e n a b l e t h e m a g i c S y s R Q k e y ? < b r > s y s r q . t x t : ∗ H o w d o I u s e t h e m a g i c S y s R Q k e y ? < b r > 其 中 文 件 ′ s y s r p . t x t ′ 包 含 该 字 符 串 , 讨 论 的 是 S y s R Q 的 功 能 。 < b r > 默 认 情 况 下 , ′ g r e p ′ 只 搜 索 当 前 目 录 。 如 果 此 目 录 下 有 许 多 子 目 录 , ′ g r e p ′ 会 以 如 下 形 式 列 出 : < b r > g r e p : s o u n d : I s a d i r e c t o r y < b r > 这 可 能 会 使 ′ g r e p ′ 的 输 出 难 于 阅 读 。 这 里 有 两 种 解 决 的 办 法 : < b r > 明 确 要 求 搜 索 子 目 录 : g r e p − r < b r > 或 忽 略 子 目 录 : g r e p − d s k i p < b r > 如 果 有 很 多 输 出 时 , 您 可 以 通 过 管 道 将 其 转 到 ′ l e s s ′ 上 阅 读 : < b r > grep magic /usr/src/Linux/Documentation/* | less
这样,您就可以更方便地阅读。

有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。

下面还有一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files  即可显示行号信息

grep -c pattern files  即可查找总行数

这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值