首页 > 编程知识 正文

linux grep多个关键字(linuxegrep命令)

时间:2023-05-05 13:24:00 阅读:68129 作者:4509

转载: http://blog.chinaunix.net/uid-7374279-id-3849705.html

另一方面,组家族概述1,Unix组家族包括组、规格和fgrep1)

1)grep

)1) grep ) globalsearchregularexpression (re ) and print out the line (全面查找正则表达式并打印行)是一个强大的文本,可以使用正则表达式搜索文本并打印匹配的行

)2)正则表达式的工作原理)在一个或多个文件中搜索字符串模板。 如果模板包含空格,则必须用引号或单引号括起来。 模板后的所有字符串都被视为文件名。 搜索结果将被发送到屏幕,而不影响原始文件的内容

)3) linux是使用GNU版本的grep,并且可以使用-G (默认参数)、-E和-F命令行选项使用egrep和fgrep功能

grep -E=egrep

grep -F=fgrep

)4) grep可用于shell脚本。 grep通过返回状态值说明搜索的状态,因此如果模板搜索成功则返回0,如果搜索失败则返回1,如果搜索到的文件不存在则返回2。 因此,可以使用这些返回值执行自动化文本处理工作2)egrep

egrep命令与grep略有不同。 egrep是grep的扩展,包含更多re元字符3)fgrep

fgrep的指令与grep略有不同。 fgrep是固定组或快速组,将所有字符视为单词。 也就是说,正则表达式的元字符表示它本身的字面意思,不再是特殊的

二、正则表达式元字符集(基本集) )

^

匹配行的开头。 例如,“grep”匹配以grep开头的所有行

$

核对行尾。 例如,“grep”匹配以grep结尾的所有行

.

匹配换行以外的字符。 例如,“gr.p”匹配gr,后跟任何字符,后跟p

*

匹配0个以上的前一个字符。 例如,“grep”匹配一个或多个空格,并匹配紧接在grep之后的行。 *一起表示任意文字

[ ]

匹配指定范围内的字符。 例如,“[gg]rep”与Grep和Grep匹配

[^ ]

匹配指定范围外的字符。 例如,“[^a-FH-z]rep”匹配不包含A-F和H-Z的字符的开头,紧接在rep之后

(..)

标记匹配的字符。 例如,’ (love),love标记为1

匹配单词的开头。 例如,“grep”匹配包含以grep开头的单词的行

匹配单词的结尾。 例如,使包含以’grep ’grep结尾的单词的行一致

x{m}

把文字重复x、m次。 例如,’o{5 }’匹配包含五个o的行

x{m,}

至少重复m次字符x。 例如,’o{ 5, }’匹配至少有五个o的行

x{m,n}

至少重复m次字符x,n次以下。 例如,’o{ 5,10}’与510个o的行匹配

w

字符和数字的匹配,即[A-Za-z0-9],例如,’gw * p’匹配,以使g后跟零个或多个字符或数字,然后是p

W

与一个或多个非单词字符(如句点)匹配

b

单词边界符号,例如“bgrepb”,仅与grep匹配

B

单词的无界符号(例如,’ bok’)可以与grep单词不匹配,并且可以与book匹配

三. egrep和grep -E元字符集

+

如果匹配一个或多个上一个字符,例如“[a-z]able”,则匹配小写字母后面跟有able的字符串、可移动、启用、禁用等

?

以前的字符匹配0个以上。 例如,’gr?

p’,则匹配gr后跟一个或没有字符,然后是p的行

a|b|c

匹配a或b或c,例如:(grep)|(sed),则匹配grep或sed

()

分组符号,如:love(able|rs)ov+,则匹配loveableov或loversov

x{m},x{m,},x{m,n} ó  x{m},x{m,},x{m,n}


四、POSIX字符类

为了在不同国家的字符编码中保持一致,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

[:alnum:]

匹配任何一个字母或数字([A-Za-z0-9])

[:alpha:]

匹配任何一个字母([A-Za-z])

[:digit:]

匹配任何一个数字([0-9])

[:lower:]

匹配任何一个小写字母([a-z])

[:upper:]

匹配任何一个大写字母([A-Z])

[:space:]

任何一个空白字符:制表符、空格

[:blank:]

空格和制表符(横向和纵向),等价于'[stv]'

[:graph:]

任何一个可看得见且可打印的字符(注意:不包括空格和换行符等)

[:print:]

任何一个可以打印的字符(注意:不包括[:cntrl:], 但包括空格符号)

[:cntrl:]

任何一个控制字符(ASCII字符集中的前 32 个字符,即:用十进制
表示为从 0 到 31,例如:换行符、制表符等等)

[:punct:]

任何一个标点符号(不包括:[:alnum:]、[:cntrl:]、[:space:]字符集)

[:xdigit:]

任何一个十六进制数(即:0-9,a-f,A-F)

五、grep命令选项

grep  [options]  PATTERN   [FILE...]

grep  [options]  [ -e PATTERN  |  -f  FILE] [FILE... ]

-A num

num必须是正整体或0,即:同时显示匹配行向下的num行,例如:grep -A  3  ‘dog’  FILE同时显示匹配行的向下3行

-B num

num必须是正整体或0,即:同时显示匹配行向上的num行,例如:grep -B 3 ‘dog’  FILE同时显示匹配行的向上3行

-num

num必须是正整体或0,即:同时显示匹配行上下的num行,例如:grep  -3  pattern  filename同时显示匹配行的上下3行

--color=WHEN
--colour=WHEN

WHEN必须是:auto、always、never三个中的其中一个,表示搜索到的关健字以颜色方式显示

-r,-R,--recurse,-d  recurse

如果FILE字段给的是一个目录,那么以递归的方式对该目录下的所有文件进行匹配搜索关健字(即:将遍历目录下的所有子目录中的文件);如果FILE字段给的是一个文件,那么就只对文件进行匹配搜索关健字

-E

即:使用egrep指令(作用:使用Extended Regular Expression)

-F

即:使用fgrep指令(作用:匹配搜索关健字时,将关健字中的元字符都按普通字符来匹配搜索,不使用Regular Expression)

-G

即:使用Basic Regular Expression

-P

即:使用Perl Regular Expression

-H

在匹配到的行的开头,追加上该行所在的文件的文件名(即:打印文件名)

-b,--byte-offset

显示匹配到的行之前的所有内容所占的字节大小(单位为bytes),例如:grep  -b  ‘dog’  filename,即:显示含有dog的行之前的那些行的内容所占的字节大小

-c,--count

只打印匹配的行数,不显示匹配的内容

-f  File,--file=File

把模板(pattern)写在一个文件里,然后使用-f参数来读取这些pattern,如果文件中包含0个pattern,那么什么都不匹配;如果有多个pattern,那么必须一行写一个pattern,即:pattern一般是带有regular expression的表达式

-h,-- no-filename

当搜索多个文件时,不显示匹配文件名前缀

-i,--ignore-case

忽略大小写差别

-q,--quiet

取消显示,只返回退出状态;0则表示找到了匹配的行

-l,--files-with-matches

打印匹配pattern的文件清单,例如:grep –L 'bug'   /etc/animal /etc/ruanxi    /etc/grub.conf,那么如果只有/etc/animal文件中的内容匹配pattern('bug'),那么使用-l参数就只显示匹配的文件清单:/etc/animal

-L,--files-without-match

打印不匹配pattern的文件清单,例如:grep –L 'bug'    /etc/animal /etc/ruanxi    /etc/grub.conf,那么如果只有/etc/animal文件中的内容匹配pattern(即:'bug'),那么使用-L参数就显示不匹配的文件清单:/etc/ruanxi、/etc/grub.conf

-n,--line-number

在匹配的行前面显示行号

-s,--no-messages

不显示关于不存在或者无法读取文件的错误信息

-v,--revert-match

反检索,只显示不匹配的行

-w,--word-regexp

如果被<和>引用,就把表达式做为一个单词搜索

-o,--only-matching

显示满足匹配的字符串,例如下面这个例子
root@monitor:~# cat -n file
1  how are you today?
2  i don't know
3  what can i do for you?
4  nice to meet you
root@monitor:~# cat file | grep -n -o meet
4:meet

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。