基本正则列表
^匹配行首
$匹配行尾
[]集合,匹配集合中任意个字符
[^]对集合取反
.匹配任意个字符
*匹配前一个字符任意次数(*不能单独使用)
\{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’。