正则表达式在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)* \1\2 ----这里的引用\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)* \1\2 ----这里的引用\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

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...