shell-正则表达式

正则表达式

正则表达式是通过正则表达引擎实现的。正则表达式引擎是一套底层软件。负责解释正则表达式模式并使用这些模式进行文本匹配。

特殊字符

正则表达式识别的特殊字符包括:
.*[]^${}+?|()
如果要用某个特殊字符作为文本字符,就必须转义。在转义特殊字符时,你需要在它前面加一个特殊字符来告诉正则表达式引擎应该将接下来的字符当作普通的文本字符。这个特殊字符就是反斜线(\)

锚字符

1.锁定在行首
脱字符(^)定义从数据流中文本行的行首开始的模式。如果模式出现在行首之外的位置,正则表达式模式则无法匹配。
要用脱字符,就必须将它放在正则表达式中指定的模式前面。
$ echo “The book store” | sed -n ‘/^
book/p’
$
$ echo “Books are great” | sed -n ‘/^
Book/p’
Books are great
$
2.锁定为行尾
特殊字符美元符($)定义了行尾锚点。将这个特殊字符放在文本模式之后来指明数据行必须以该文本模式结尾
$ echo “This is a good book” | sed -n ‘/book$/p’
This is a good book
$ echo “This book is good” | sed -n ‘/book$/p’
$

点号字符

特殊字符点号用来匹配除换行符之外的任意单个字符。它必须匹配一个字符,如果在点号字符的位置没有字符,那么模式就不成立。
$ cat data6
This is a test of a line.
The cat is sleeping.
That is a very nice hat.
This test is at line four.
at ten o’clock we’ll go home.
$ sed -n ‘/.at/p’ data6
The cat is sleeping.
That is a very nice hat.
This test is at line four.
$

字符组

$ sed -n ‘/[ch]at/p’ data6
The cat is sleeping.
That is a very nice hat.
$

排除型字符组

在正则表达式模式中,也可以反转字符组的作用。可以寻找组中没有的字符,而不是去寻找组中含有的字符。要这么做的话,只要在字符组的开头加个脱字符
$ sed -n ‘/[^ch]at/p’ data6
This test is at line four.
$

星号

在字符后面放置星号表明该字符必须在匹配模式的文本中出现0次或多次。
$ echo “ik” | sed -n ‘/iek/p’
ik
$ echo “iek” | sed -n '/ie
k/p’
iek
$ echo “ieek” | sed -n ‘/ie*k/p’
ieek

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值