grep与正则表达式

grep与正则表达式

grep

  grep全称为Global search REgular expression and Print out the line,此命令是在Linux中
著名的文本三剑客之一,本命令可用于打印出文件中匹配的内容,复杂的匹配内容可以使用正则表达式来实现。

grep的命令使用格式

grep [OPTION]… PATTERN [FILE]…

grep常用选项

选项说明
–color=auto对匹配到的文本着色显示,grep默认匹配到的文字是着色的
-m #匹配#次后停止
-v显示不被匹配到的行
-i忽略字符大小写
-n显示匹配到的行号
-c统计匹配到的行号
-o仅显示匹配到的字符串
-q静默模式,不输出任何信息
-A #after,后#行
-B #before,前#后
-C #context,前后各#行
-e实现多个选项间的逻辑or关系
-w匹配到整个单词
-E使用ERE(支持扩展正则表达式)
-F相当于fgrep,不支持正则表达式
-ffile根据模式文件处理

命令演示

例1、grep -m
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jU1KLLFQ-1570954507652)(1.png)]在这里插入图片描述
例2、grep -o 与grep -v
在这里插入图片描述 在这里插入图片描述
例3、grep -i
在这里插入图片描述
例4、grep -n 与grep -c
在这里插入图片描述
例5、grep -A grep-B 与grep -C

例6、grep -e
在这里插入图片描述
例7、grep -w
在这里插入图片描述

正则表达式

  正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式使用广泛,在各种编程语言中都有对应的库,Linux中很多命令都支持正则表达式,比如前面介绍的grep命令。正则表达式有两种:正则表达式和扩展正则表达式,两者相差不多。正则表达式的元字符从功能上可以分为四种:字符匹配、次数匹配、位置锚定、分组和逻辑组合。

字符匹配

格式说明
.匹配任意单个字符
[]匹配指定范围内的任意单个字符,示例:[wang] [0-9] [a-z] [a-zA-Z]
[^]匹配指定范围外的任意单个字符
[:alnum:]字母和数字
[:alpha:]代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:]小写字母
[:upper:]大写字母
[:blank:]空白字符(空格和制表符)
[:space:]水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:]不可打印的控制字符(退格、删除、警铃…)
[:digit:]十进制数字
[:xdigit:]十六进制数字
[:graph:]可打印的非空白字符
[:print:]可打印字符
[:punct:]标点符号

匹配次数

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

格式说明
*匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配
.*任意长度的任意字符
\?匹配其前面的字符0或1次
\+匹配其前面的字符至少1次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次
\{n,\}匹配前面的字符至少n次

位置锚定

位置锚定:定位出现的位置

格式说明
^行首锚定,用于模式的最左侧
$行尾锚定,用于模式的最右侧
^PATTERN$用于模式匹配整行
^$空行
^[[:space:]]*$空白行
\< 或 \b词首锚定,用于单词模式的左侧
\> 或 \b词尾锚定,用于单词模式的右侧
\<PATTERN\>匹配整个单词

分组和逻辑处理

分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体处理
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些 变量的命名方式为: \1, \2, \3, …
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符 后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
或者:\|
示例:
a\|b     a或b
C\|cat     C或cat
\(C\|c\)at  Cat或cat

扩展正则表达式

字符匹配

.   任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符

次数匹配

*       匹配前面字符任意次
?       0或1次
+      1次或多次
{m}     匹配m次
{m,n}     至少m,至多n次

位置锚定

^     行首
$     行尾
\<, \b   语首
\>, \b   语尾

分组

分组 :() 后向引用:\1, \2, …
或者:|
a|b a或b
C|cat C或cat
(C|c)at Cat或cat

命令演示

例1、匹配单个字符

例2、用正则表达式和扩展正则表达式取出ifconfig中的IP地址
在这里插入图片描述
在这里插入图片描述
例3、\<和\>
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值