匹配操作符
- 转义字符:\
- 匹配任意单个字符:.
- 字符序列单字符占位:[1249a],[^12],[a-k]
- 行首:^
- 行尾:$
- 单词首尾边界:<,>,:,<abc
- 连接操作:|
- 选择操作符:(,)
- 反向引用:\n
重复操作符:
- 匹配0或1次:?
- 匹配0到多次:*
- 匹配1或多次:+
- 匹配n次:{n}
- 匹配n到多次:{n,}
- 匹配n到m次:{n,m}
以下符号是扩展表达式,使用需要加"\"
“?” “+” “{” “}” “|” “(” “)”
匹配任意字符
.*
eg01:匹配包含单词以apple开头的行
[root@node01 ~]# grep "\<apple" exp.txt
eg02:匹配包含单词以apple结尾的行
[root@node01 ~]# grep "apple\>" exp.txt
eg03:匹配含有apple单词的行
[root@node01 ~]# grep "\<apple\>" exp.txt
eg04:匹配任意字符的使用:.*
[root@node01 ~]# grep ".*apple.*pear.*banana" exp.txt
abcapple123pearbbbbbananaqqqadf
eg05:选择操作符:(,)
[root@node01 ~]# grep ".*\(apple\).*\(pear\).*\1.*\2" exp.txt
qwerappletyuipearasdfapplezxcvbpearhjkl
eg06:匹配文件中包含四位整数的文本行
- 写法一
将每一种包含四位整数的情况用“|”连接起来
[root@node01 ~]# grep -E "^[0-9]{4}[^0-9]|[^0-9][0-9]{4}[^0-9]|[^0-9][0-9]{4}$|^[0-9]{4}$" exp.txt
- 写法二
以一个四位整数为整体分隔成三部分,左边可以是以数字开头也可以是非数字开头(但后面必须有一位数字),中间是两位数字,右边可以是数字结尾或者是非数字结尾(但必须在最前面有一位数字)
[root@node01 ~]# grep -E "(^[0-9]|[^0-9][0-9])[0-9]{2}([0-9]$|[0-9][^0-9])" exp.txt