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

正则表达式在GREP使用的方法和技巧

发布时间:2020-12-14 01:42:32 所属栏目:百科 来源:网络整理
导读:正则表达式在GREP使用的方法和技巧 1、 正则表达式的基本概念 Grep 是查找的一个基本命令 文本处理工具 : 根据用户指定的文本模式,对目标文件进行逐行搜索,并显示匹配。 正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或

正则表达式在GREP使用的方法和技巧

1、 正则表达式的基本概念

Grep 是查找的一个基本命令 文本处理工具: 根据用户指定的文本模式,对目标文件进行逐行搜索,并显示匹配。

正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。

2、正则表达式分类:

基本正则表达式和扩展正则表达式


基本正则表达式

grep [OPTIONS] PATTERN [FILE...


元字符:

字符匹配:

.:匹配任意字符

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

[]:匹配范围内的字符

[0-9],------表示09中的任意一个字符

字符集合:

[:space:]表示任意空白字符

[:punct:] 所有的标点符号

[:lower:]所有小写字母

[:upper:]所有大写

[:digit:]所有数字

[:alnum:]所有数字和字母

[:alpha:]所有字母

次数匹配:用于指定其面前的字符所能够出现的次数

*:任意长度,它面前的字符可以出现任意次;例如:x*y

?:0次或1次,它前面的字符是可有可无的;例如:x?y

{m}:m次,它前面的字符可以出现m次;

{mn}:至少m次,至多n

{m,}:至少m

{0,n}:至多n

位置锚定符号:

^:行首设定,

$:行尾设定,

^$:空白行

&;:词首

&;:词尾

分组字符:

():分组字符---分组默认编号为自左而后编号

#:引用第n个括号所匹配到的内容,而非模式本身;

如:(abc)(123)* 12 ----这里的引用1引用为(abc)的内容;2引用为(123)的内容

例如

1、在一个qq库中提出8-11位的QQ号码有那些?

grep "&;[0-9]{8,11}&; " qq

2、例如:提取a.txt中出现一位单位数的行

grep "&;[0-9]{1,}&;" /home/a.txt

3、显示/etc/passwd文件中默认shell/bin/bash的用户

wKiom1PB91TQuoKFAABPZdkQWLc833.jpg

4、显示/boot/grub/grub.conf中以至少一个空白字符的行

wKioL1PB9zfR8WD-AABsVeibdBI706.jpg

5、添加用户bashsynchalt,而找出当前系统上其用户名和默认shell相同的用户

grep "^([[:alnum:]]{1,}):.*1$"/etc/passwd

wKiom1PB93bTNE74AACrj4Vp7nE104.jpg

6、在/etc/inittab中显示以#号开头后跟至少2个空白字符的行

wKioL1PB91fzt2WqAACpiaBb6yY017.jpg

扩展正则表达式:

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

字符匹配:

.:任意字符

[]

[^]:内容取反如:非空白字符开头的行―[^[:space:]]

次数匹配:

*:任意次

?:01

+:至少一次

m}:精确匹配每次

{m,n}:至少m次,最多n

{m,}:至少出现m

{0,n}:最多出现n

位置锚定:设置要搜索的位置

^:行首锚定

$:行尾锚定 ---^$表示空白行

&;:词首锚定

&;:词尾锚定

分组设定:

():括起来的内容以组的形式,依次匹配

#:引用: 1,2,3

(abc)(123)* 12 ----这里的引用1引用为(abc)的内容;2引用为(123)的内容 |:或者

a|ba或者b

7、显示当前系统上rootbashuser1 用户的默认shell

grep?E "^(root|bash|user1):" /etc/passwd

wKioL1PB926Saeo-AAB3HhCEn-o692.jpg

8、找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“()”行;

grep -o -E "&;[[:alpha:]]+&;().*" /etc/rc.d/init.d/functions

wKiom1PB97iDFSOGAABugJcVU6U605.jpg

9、使用echo命令输出一个路径,而后使用grep取出其基名;

echo "/etc/passwd" | grep -o -E "[[:alnum:]]+/?"

wKiom1PB98uDOEPvAAA3_6wav9o824.jpg

10、找出ifconfig命令结果中的1-255之间的数字

ifconfig | grep -o -E"&;[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]&;"

11、写一个模式,能匹配合理的IPV4地址;

wKiom1PGTLajgbswAADob7jRCoY047.jpg

(编辑:李大同)

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

    推荐文章
      热点阅读