1,&
表示在当前插入一下文本
localhost test # cat tmp
hello world
localhost test # sed 's/hello/& the whole/1' tmp
hello the whole world
|
2,指定替换第几次匹配文本
上面例子中
sed 's/hello/& the whole/1' tmp
最后的1表示的就是“替换第一次匹配的文本”,同理,2的话就是匹配第2次
3,n
不打印模式空间的最后内容
localhost test # cat tmp
hello world
hi
localhost test # cat sed.sc
#n
/hi/p
localhost test # sed -f sed.sc tmp
hi
|
上面例子是打印出包含hi的行。可以用一句话来表示:sed -n '/hi/p' tmp
4, !
表相反
localhost test # cat tmp
hello world
hi
localhost test # sed -n '/hi/p' tmp
hi
localhost test # sed -n '/hi/!p' tmp
hello world
|
5,指定行号
localhost test # sed -n '2p' tmp
hi
localhost test # sed -n '1,2p' tmp
hello world
hi
localhost test # sed -n '0,2p' tmp
sed: -e expression #1, char 4: invalid usage of line address 0
localhost test # cat tmp hello world hi mi
localhost test # sed '/h/,/i/ s/h/y/g' tmp yello world yi
mi
|
注意行号是从1开始的,最后一句的替换范围是“第一次包含h的行”和“之后第一次包含i的行”之间,也就是说先匹配包含h的行,成功后从
下一行开始再匹配i的行
6, $
最后一行
localhost test # sed -n '$p' tmp
hi
|
7,注意前后的null字符
localhost test # echo abc | sed 's/b*/1/'
1abc
localhost test # echo abc | sed 's/b*/1/g'
1a1c1
|
阅读(1338) | 评论(0) | 转发(0) |