$ echo "The book are " | sed -n '/book/p'The book are
$ echo "The book are " | sed -n '/^book/p'#锁定book出现在行首$ echo "The book ^are " | sed -n '/book ^/p'#若不将^放在模式开头,则^表示普通字符The book ^are
$ $ echo "The book good book" | sed -n '/good/p'The book good book
$ echo "The book good book" | sed -n '/good$/p'#锁定good出现在行尾
使用正则过滤数据流中的空白行
$ sed '/^$/d' data #匹配行首和行尾什么都没有的行,并删除
This is an added line.
This is thesecond added line
chenhong:shell_workspace chenhong$
点字符用来匹配任意的单字符,除了换行符
$ cat data
Tihs is a test ofline.
The cat is sleeping.
That is a very nice hat.
This test is atlinefour.
$ sed -n '/.at/p' data
The cat is sleeping.
That is a very nice hat.
This test is atlinefour.
方框号[]表示字符组
$ cat data
Tihs is a test ofline.
The cat is sleeping.
That is a very nice hat.
This test is atlinefour.
atten o'clock we'll go home.
$ sed -n '/[ch]at/p' data #匹配cat或hat
The cat is sleeping.
That is a very nice hat.
$ sed -n '/[^ch]at/p' data #匹配 .at ,其中不能是cat和hat
This test is atlinefour.
$ sed -n '/[c-f]at/p' data # 匹配[cdef]at
The cat is sleeping.
$ sed -n '/[a-bh-k]at/p' data #匹配[abhijk]at
That is a very nice hat.
使用正则过滤出4位数字的行
$ cat data
21234
1000
1001
1002
1003
1004
1005
45321
$ sed -n '/^[0123456789][0123456789][0123456789][0123456789]$/p' data
1000
1001
1002
1003
1004
1005
$ sed -n '/^[0-9][0-9][0-9][0-9]$/p' data #使用区间写法
1000
1001
1002
1003
1004
1005
正则表达式中的特殊字符
$ echo"abc" | sed -n '/[[:digit:]]/p'#匹配0~9之间的数字
$ echo"abc" | sed -n '/[[:alpha:]]/p'#匹配任意字母,不管是大写还是小写
abc
$ echo"This is, a test" | sed -n '/[[:punct:]]/p'#匹配标点符号
This is, a test
星号表示前个字符会出现0次或多次
$ echo"ik" | sed -n '/ie*k/p'#e出现0次
ik
$ echo"iek" | sed -n '/ie*k/p'#e出现1次
iek
$ echo"ieek" | sed -n '/ie*k/p'#e出现多次
ieek
$ echo"baat" | sed -n "/b[ae]*t/p"
baat
$ echo"baaeeet" | sed -n "/b[ae]*t/p"
baaeeet
$ echo"The cat is asleep " | gawk '/cat|dog/{print $0}'
The cat is asleep
$ echo"The dog is asleep " | gawk '/cat|dog/{print $0}'
The dog is asleep
$ echo"The sheep is asleep " | gawk '/cat|dog/{print $0}'