grep正则

本文详细介绍了正则表达式的各种元字符和用法,包括基本正则和扩展正则的匹配规则,如行首、行尾、集合、反向集合、任意字符、重复次数等。通过实例展示了如何使用grep命令进行搜索,例如查找特定开头、结尾的行,匹配特定字符组合等。同时,文章还提到了正则表达式的选项和输出控制,如忽略大小写、只显示匹配部分等,为日常文本处理提供了实用指导。

基本正则列表

^         匹配行首

$         匹配行尾

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

[ ^ ]         对集合取反

.                 匹配任意个字符

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

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

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

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

\( \ )                 保留

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

grep bash$ 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 “ro+t” 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-regexp       PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
  -F, --fixed-strings               PATTERN 是一组由断行符分隔的定长字符串。
  -G, --basic-regexp             PATTERN 是一个基本正则表达式(缩写为 BRE)
  -P, --perl-regexp                PATTERN 是一个 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=NUM       NUM 次匹配后停止
-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=TYPE   assume that binary files are TYPE;
                            TYPE is 'binary', 'text', or 'without-match'
-a, --text                equivalent to --binary-files=text
-I                        equivalent to --binary-files=without-match
-d, --directories=ACTION  how to handle directories;
                            ACTION is 'read', 'recurse', or 'skip'
-D, --devices=ACTION      how to handle devices, FIFOs and sockets;
                            ACTION is 'read' or 'skip'
-r, --recursive           like --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 行
  -NUM                      same as --context=NUM
      --group-separator=SEP         use SEP as a group separator
      --no-group-separator             use empty string as a group separator
      --color[=WHEN],
      --colour[=WHEN]                   use markers to highlight the matching strings;
                                                    WHEN is 'always', 'never', or 'auto'
  -U, --binary                                do not strip CR characters at EOL (MSDOS/Windows)
  -u, --unix-byte-offsets                report offsets as if CRs were not there
                            (MSDOS/Windows)

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

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值