免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5345 | 回复: 4
打印 上一主题 下一主题

sed替换的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-28 09:55 |只看该作者 |倒序浏览
在鸟哥私房菜中有以下示例:
[root@www ~]# nl /etc/passwd | sed '2a drink tea'
1 root:0:0:root:/root:/bin/bash
2 bin:1:1:bin:/bin:/sbin/nologin
drink tea
3 daemon:2:2:daemon:/sbin:/sbin/nologin

在第二行后插入 drink tea
我在freebsd 6.2下怎么试都不行,提示如下:
%nl /etc/passwd | sed '2a drink tea'
sed: 1: "2a drink tea": command a expects \ followed by text

这个是什么问题,怎样写才是正确的?

另外把命令写到文件里执行没问题
%cat change.sed
#!/usr/bin/sed -f
2 a\
drink tea

./change.sed /etc/passwd 这样是正常的.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2010-12-28 10:01 |只看该作者
正规的模式应该是a后面加一个\的。

可能还是gnu的改进的sed

论坛徽章:
0
3 [报告]
发表于 2010-12-28 10:08 |只看该作者
本帖最后由 zbhdpx 于 2010-12-28 10:12 编辑

以下在csh下边试
%nl /etc/passwd | sed '2a\ drink tea'
sed: 1: "2a\ drink tea": extra characters after \ at the end of a command

我加了也是这样,刚又试了一下,可能我用的是csh,


在sh下

# nl /etc/passwd | sed '2a\ drink tea'
sed: 1: "2a\ drink tea": extra characters after \ at the end of a command

# cat test.txt |sed '2c\
> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> '

HORSEFEATHERS SOFTWARE PRODUCT BULLETIN
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  of Horsefeathers  software products  --  Horsefeathers  Business
  BASIC, BASIC  Librarian,  and LIDO.  These software products can
  fill  your    requirements    for    powerful,    sophisticated,
  general-purpose business  software providing you with a base for
  software customization or development.


这样是正常的,

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-12-28 12:22 |只看该作者
本帖最后由 L_kernel 于 2010-12-28 18:22 编辑
以下在csh下边试
%nl /etc/passwd | sed '2a\ drink tea'
sed: 1: "2a\ drink tea": extra characters af ...
zbhdpx 发表于 2010-12-28 10:08



    bash和bourne shell都不行。同样是在bsd 8.1当中。
nl /etc/passwd | sed '2a\ drink tea'

论坛徽章:
0
5 [报告]
发表于 2010-12-28 17:25 |只看该作者
本帖最后由 zbhdpx 于 2010-12-28 17:29 编辑

%cat test.txt
The honeysuckle band played all night long for only $90.
Too bad the disco floor fell through at 23:10.
The local nurse Miss P.Neave was in attendance.

%cat test.txt | sed '2a\ \回车
? AAAAAAAAAAAAAAAAAAAA \回车
? '回车
The honeysuckle band played all night long for only $90.
Too bad the disco floor fell through at 23:10.
AAAAAAAAAAAAAAAAAAAA
The local nurse Miss P.Neave was in attendance.

在csh下,上边的操作是可行的,但是插入内容不多于一行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP