正则表达式快速入门

基础正则 BRE

^ 以…开头的行

$ grep '^or' demo1.txt 
or 3.6 kilobytes of data transferred.

$ 以…结尾的行

$ grep 'bytes$' demo1.txt 
so a two-page letter would be 3600 bytes
One pixel in a photo takes 3 bytes
A 4K photo would take 8,294,400 bytes, or 8.2 Megabytes

注意:利用cat -A查看结尾是否含有空格。

^$ 空行

空行表示这一行什么都没有,如果有空格则不算是空行。

$ grep '^$' demo1.txt 

$ grep -n '^$' demo1.txt 
7:

善用-n显示空行所在位置。
常用于排除空行显示,-v显示除过滤行以外的其他行内容。

grep -v '^$' demo1.txt 

. 任意一个字符

不匹配空行。

grep '.' demo1.txt 

\ 转义字符

匹配出以.结尾的行:

$ grep '\.$' demo1.txt 
One pixel in a photo takes 3 bytes.

* 前一个字符重复0次及以上

grep '0*' demo1.txt

不含0的字符的行也会出现,表示0出现0次。

.* 任何内容(包括空行)

匹配开头到最后一个p字符,包括p

grep '^.*p' demo1.txt

从上图可以看出正则表达式的贪婪性,尽可能匹配更多的内容。

[] 匹配一次中括号内的任何一个字符

grep '[abc]' demo1.txt

常用范围:

[a-z]
[A-Z]
[0-9]

匹配大小写字母和数字:

grep '[a-zA-Z0-9]' demo1.txt
grep '[a-Z0-9]' demo1.txt

中括号的里内容在大多数情况下会自动去除特殊含义,[a-z|A-Z|0-9]匹配大小写字母、数字和|

[^] 取反/排除

匹配除a-m的所有内容。

grep '[^a-m]' demo1.txt

扩展正则 ERE

+ 前一个字符重复1次及以上

$ grep -E '0+' demo1.txt 
so a two-page letter would be 3600 bytes
A 4K photo would take 8,294,400 bytes, or 8.2 Megabytes
A video is like a photo that changes 30 times a second

注意:使用扩展正则时需要加上-E参数或者使用egrep

匹配出文件中连续出现的数字:

egrep '[0-9]+' demo1.txt

只显示匹配的内容,加上-o参数。

egrep -o '[0-9]+' demo1.txt

| 或者

$ egrep 'one|two' demo1.txt 
requires data to be transmitted between two computers
A single character usually takes one byte
so a two-page letter would be 3600 bytes
one each for red, green and blue in the pixel

() 小括号内的内容表示一个整体

egrep '(t|g)es' demo1.txt

{} 重复出现

格式:o{n,m},表示前一个字符o,至少重复n次,最多m次。闭区间[n,m]

egrep '0{1,2}' demo1.txt

格式:o{n},表示前一个字符o,重复n次。==n

egrep '0{2}' demo1.txt

还有两种比较少用的情况:
o{n,},表示前一个字符o,至少重复n次。>=n
o{,m},表示前一个字符o,最多重复m次。<=m

? 前一个字符出现0次或1次

例:匹配gegle
传统写法:

egrep 'ge|gle' demo1.txt

使用?的写法:

egrep 'gl?e' demo1.txt
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
颜文字
上一篇
下一篇