正则表达式基础(3)

正则表达式并不关心模式在数据流中的位置。它也不关心模式出现了多少次。一旦正则表达式匹配了文本字符串中任意位置上的模式,它就会将该字符串传回Linux工具。
关键在于将正则表达式模式匹配到数据流文本上。重要的是记住正则表达式对匹配的模式非常挑剔。第一条原则就是:正则表达式模式都区分大小写。这意味着它们只会匹配大小写也相符的模式。

$ echo "This is a test" | sed -n '/this/p'
$ 
$ echo "This is a test" | sed -n '/This/p' 
This is a test 
$ 

第一次尝试没能匹配成功,因为this在字符串中并不都是小写,而第二次尝试在模式中使用大写字母,所以能正常工作。
在正则表达式中,不用写出整个单词。只要定义的文本出现在数据流中,正则表达式就能够匹配。

$ echo "The books are expensive" | sed -n '/book/p' 
The books are expensive 
$ 

尽管数据流中的文本是books,但数据中含有正则表达式book,因此正则表达式模式跟数据匹配。当然,反之正则表达式就不成立了。

$ echo "The book is expensive" | sed -n '/books/p' 
$ 

完整的正则表达式文本并未在数据流中出现,因此匹配失败,sed编辑器不会显示任何文本。
也不用局限于在正则表达式中只用单个文本单词,可以在正则表达式中使用空格和数字。

$ echo "This is line number 1" | sed -n '/ber 1/p' 
This is line number 1 
$ 

在正则表达式中,空格和其他的字符并没有什么区别。

$ echo "This is line number1" | sed -n '/ber 1/p' 
$ 

如果在正则表达式中定义了空格,那么它必须出现在数据流中。甚至可以创建匹配多个连续空格的正则表达式模式。

$ cat data
This is a normal line of text. 
This is a line with too many spaces. 
$ sed -n '/ /p' data
This is a line with too many spaces. 
$ 

单词间有两个空格的行匹配正则表达式模式。这是用来查看文本文件中空格问题的好办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值