加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

grep正则表达式及扩展表达式

发布时间:2020-12-14 01:22:08 所属栏目:百科 来源:网络整理
导读:文本查找的需要: grep:global research,根据模式,搜索文本,并将符合模式的文本行显示出来。 egrep,fgrep pattern:模式英文,文本字符和正则表达式的元字符组合而成匹配条件。 grep [optians] [pattern] file... -i --ignore-case 忽略大小写 --color -v

文本查找的需要:

grep:global research,根据模式,搜索文本,并将符合模式的文本行显示出来。

egrep,fgrep

pattern:模式英文,文本字符和正则表达式的元字符组合而成匹配条件。

grep [optians] [pattern] file...

-i --ignore-case 忽略大小写

--color

-v 反向查找 被模式匹配的行不显示

-o 只显示被模式匹配到的字符串

* :任意长度的任意字符

?:任意单个字符

[]:指定范围内的

[^]:指定范围外的


正则表达式:Regular EXPression,REGEXP

grep 'pattern' file

元字符:

.:匹配任意单个字符;

[]:匹配指定范围的任意单个字符

[^]:匹配指定范围外的单个字符

[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:],[:digit:]

匹配次数:

*:匹配其前面的字符任意次

a,b,ab,aab,acb,adb,amnb

a*b

a.*b

.*:任意长度的任意字符

?:做次数匹配,匹配其前面的字符一次或零次

正常工作在贪婪模式下,尽可能长的去匹配

{m,n}:匹配其前字符至少M次,至多N次

{1,}至少一次

{0,3} 最多三次

grep 'a{1,3}b a

位置锚定:

^:锚定行首,此字符后面的任意内容必须出现在行首。

grep '^r..t' /etc/passwd

$:锚定行尾,此字符前面的任意内容必须出现在行尾

grep 'y$' /etc/inittab

grep 'b..h$' /etc/passwd

^$:空白行

锚定词首:

&;: 其后面的任意字符必须作为单词,首部出现,锚定词首

&;:其前面的任意字符必须作为单词,尾部出现,锚定词尾

&;root&;

brootb =&;root&;,可以使用b代替<,>

分组:

()

(ab)* ab可以出现0次,1次,任意次

grep '(l..e).*(l..e)' a 匹配以l..e的,并且中间是任意字符


1:引用第一个左括号以及与之对应的右括号所包括的所有内容

2:

3:

grep '([0-9]).*1$ /etc/inittab 行中出现数字并且以相同数字结尾的

grep '(^[0-9]).*1$ /etc/passwd 以首先开关的数字并且以相同数字结尾的

练习:分析/etc/inittab文件中如下文件中前两行的特征(每一行中出现数字必须相同),请写出可以精确找到类似两行的模式:

11:1:wait:/etc/rc.d/rc 1

13:3:wait:/etc/rc.d/rc 3


grep '^1([0-9]).1.*1$'

正则表达式:

Basic REGEXP:基本

Extended REGEXP:扩展

基本正则表达式:

.:任意单个字符

[]:指定范围

[^]:指定范围以外的

次数匹配:

*:其前的任意次

?:0次或者1次

{m,n)}:至少M次,到多N次

.*:任意长度的字符

锚定:

^:行首

$:行尾

&;,b:后面的任意单词,必须出现在首部

&;,b:前面的任意单词,必须出现在尾部

()用于分组的

1,2,3.....用于后向引用

grep:使用基本正则表达式定义的模式来过滤文本的命令

-i

-v 反向搜索,不匹配的显示

-o 只显示匹配到的字符串

--color

-E :使用扩展正则表达式

-A#(数值):当某一行被grep指定的模式匹配后,

grep -A 2 '^core id' /proc/cpuinfo 后面的2行

-B:

grep -B 2 '^core id' /proc/cpuinfo 前面2行

-C:-C2 前后各2行

扩展正则表达式:

字符匹配:与基本一样

.

[]

[^]

次数匹配

*:与基本一样

?:其前一次或零次

+:其前字符至少一次,匹配其前面字符至少1次

+*近似*

{m,n},不需要使用,直接使用

位置锚定与基本一样

分组:

():分组

1,3,....

|:或者:a|b or的意思

grep --color -E c|cat a.txt

egrep 'b([0-9]|[0-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9]b'

ifconfig | grep '[0-9]{1,3}.[0-9]{1,3}'

ifconfig | grep -o 'b[0-9]{1,3}b.b[0-9]{1,3}b'

-o 匹配串本身

ifconfig eth0 | grep -o '([0-9]{1,3}.){3}[0-9]{1,3}'

ifconfig ens160 | sed -nr 's/inet (.*) net.*/1/p'

ifconfig ens160 | grep -Po '(?<=inet)(.*)(?=net)'


cat /etc/inittab | grep '^#$' | wc -l

cat /etc/inittab | grep '^#$'

IPV4:

5类:A B C D E

A:1-127

B:128-191

C:192:223

fgrep:fast,不支持正则表达式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读