Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552817
  • 博文数量: 83
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1169
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-29 22:34
文章分类

全部博文(83)

文章存档

2011年(3)

2010年(29)

2009年(30)

2008年(21)

我的朋友

分类:

2010-05-23 01:40:44

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) |
给主人留下些什么吧!~~