当前位置:

grep正则

访客 2024-01-05 349 0

基本正则列表

^匹配行首

$匹配行尾

[]集合,匹配集合中任意个字符

[^]对集合取反

.匹配任意个字符

*匹配前一个字符任意次数(*不能单独使用)

\{n,\}匹配前一个字符n到m次

\{n\}匹配前一个字符n次

\{n,\}匹配前一个字符n次及以上

\(\)保留

grep^rootuser//找以root开头的行

grepbash$user//找以bash结尾的行

grep^$user//找空行

grep-v^$user//显示除了空行的内容

grep“[root]”user//找r、o、t任意一个字符

grep“[rot]”user//效果同上

grep“[^rot]”user//Displayr或o或t以外的内容

grep“[0123456789]”user//找所有数字

grep“[0-9]”user//效果同上

grep“[^0-9]”user//显示数字以外内容

grep“[a-z]”user//找所有小写字母

grep“[A-Z]”user//找所有大写字母

grep“[a-Z]”user//找所有字母

grep“[^0-9a-Z]”user//找所有符号

grep“.”user//找任意单个字符,文档中每个字符都可以理解为任意字符

grep“r..t“user//找rt之间有2个任意字符的行

grep“r.t”user//找rt之间有1个任意字符的行,没有匹配内容,就无输出

grep“*”user//错误用法,*号是匹配前一个字符任意次,不能单独使用

grep“ro*t”user//找rt,中间的o有没有都行,有几次都行

grep“.*”user//找任意,包括空行.与*的组合在正则中相当于通配符的效果

grep“ro\{1,2\}t”user//找rt,中间的o可以有1~2个

grep“ro\{2,6\}t”user/找rt,中间的o可以有2~6个

grep“ro\{1,\}t”user//找rt,中间的o可以有1个以及1个以上

grep“ro\{3\}t”user//找rt,中间的o必须只有有3个

扩展正则列表

正则符号描述

最少匹配一次

?最多匹配一次

{n,m}匹配n到m次

()组合为整体,保留或是复制$1是沾贴

|或者

\b单词边界

以上命令均可以加-E选项并且去掉所有\,改成扩展正则的用法,比如:

grep“ro\{1,\}t”user可以改成grep-E“ro{1,}t”user或者egrep“ro{1,}t”user

grep“ro\{1,\}t”user//使用基本正则找o出现1次以及1次以上

egrep“ro{1,}t”user//使用扩展正则,效果同上,比较精简

egrep“rot”user//使用扩展正则,效果同上,最精简

grep“roo\{0,1\}t”user//使用基本正则找第二个o出现0~1次

egrep“roo{0,1}t”user//使用扩展正则,效果同上,比较精简

egrep“roo?t”user//使用扩展正则,效果同上,最精简

egrep“(0:){2}”user//找连续的2个0:小括号的作用是将字符组合为一个整体

egrep“root|bin“user//找有root或者bin的行

egrep“the\b”abc.txt//在abc.txt文件中找the,右边不允许出现数字、字母、下划线

egrep“\bthe\b”abc.txt//两边都不允许出现数字、字母、下划线

egrep“\<the\>”abc.txt//效果同

正则表达式选择与解释:
-E,--extended-regexpPATTERN是一个可扩展的正则表达式(缩写为ERE)
-F,--fixed-stringsPATTERN是一组由断行符分隔的定长字符串。
-G,--basic-regexpPATTERN是一个基本正则表达式(缩写为BRE)
-P,--perl-regexpPATTERN是一个Perl正则表达式
-e,--regexp=PATTERN用PATTERN来进行匹配操作
-f,--file=FILE从FILE中取得PATTERN
-i,--ignore-case忽略大小写
-w,--word-regexp强制PATTERN仅完全匹配字词
-x,--line-regexp强制PATTERN仅完全匹配一行
-z,--null-data一个0字节的数据行,但不是空行

Miscellaneous:
-s,--no-messages抑制错误消息
-v,--invert-match选择不匹配的行
-V,--version显示版本信息并退出
--help显示此帮助文本并退出

输出控制:
-m,--max-count=NUMNUM次匹配后停止
-b,--byte-offset输出的同时打印字节偏移
-n,--line-number输出的同时打印行号
--line-buffered每行输出清空
-H,--with-filename为每一匹配项打印文件名
-h,--no-filename输出时不显示文件名前缀
--label=LABEL将LABEL作为标准输入文件名前缀
-o,--only-matching仅显示线匹配的部分PATTERN
-q,--quiet,--silent抑制所有正常输出
--binary-files=TYPEassumethatbinaryfilesareTYPE;
TYPEis'binary','text',or'without-match'
-a,--textequivalentto--binary-files=text
-Iequivalentto--binary-files=without-match
-d,--directories=ACTIONhowtohandledirectories;
ACTIONis'read','recurse',or'skip'
-D,--devices=ACTIONhowtohandledevices,FIFOsandsockets;
ACTIONis'read'or'skip'
-r,--recursivelike--directories=recurse
-R,--dereference-recursive
同样,但遵循所有符号链接
--include=FILE_PATTERN
仅搜索与FILE_PATTERN匹配的文件
--exclude=FILE_PATTERN
跳过与FILE_PATTERN匹配的文件和目录
--exclude-from=FILE从文件中跳过与任何文件模式匹配的文件
--exclude-dir=PATTERN将跳过与模式匹配的目录
-L,--files-without-match仅打印不包含匹配项的文件名
-l,--files-with-matches仅打印包含匹配项的文件的名称
-c,--count仅打印每个文件的匹配行数
-T,--initial-tab使选项卡对齐(如果需要)
-Z,--null打印文件名后的0字节

文件控制:
-B,--before-context=NUM打印以文本起始的NUM行
-A,--after-context=NUM打印以文本结尾的NUM行
-C,--context=NUM打印输出文本NUM行
-NUMsameas--context=NUM
--group-separator=SEPuseSEPasagroupseparator
--no-group-separatoruseemptystringasagroupseparator
--color[=WHEN],
--colour[=WHEN]usemarkerstohighlightthematchingstrings;
WHENis'always','never',or'auto'
-U,--binarydonotstripCRcharactersatEOL(MSDOS/Windows)
-u,--unix-byte-offsetsreportoffsetsasifCRswerenotthere
(MSDOS/Windows)

‘egrep’即‘grep-E’。‘fgrep’即‘grep-F’。

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~