免费注册 查看新帖 |

Chinaunix

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

sed的函数替换问题!!在线等待!!谢谢!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-05 16:16 |只看该作者 |倒序浏览
需要往一个文本里面添加数据,使用如下命令

file_name="This is new file."
sed "{$ a\
$file_name
}" $tmp
报告如下:sed: Function {$ a cannot be parsed.
如果不用“"”,使用“'”,则不能引用参数,那么再SED中如果要增加一行,到底该如何处理呢??
顺道问一下,修改后的文件如何保存?是不是非要一个中间文件才可以呢??

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-06-05 16:55 |只看该作者

sed的函数替换问题!!在线等待!!谢谢!!!

这里应该用单引号,屏蔽shell中"$"字符的特殊含义。把$原样同其他用单引号括启的脚本一起传递给sed处理。

论坛徽章:
0
3 [报告]
发表于 2003-06-05 17:18 |只看该作者

sed的函数替换问题!!在线等待!!谢谢!!!

能写个例子吗??我还是不太明白??

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-06-05 17:36 |只看该作者

sed的函数替换问题!!在线等待!!谢谢!!!

sorry, 没看到你还需要展开变量。那就用"\"加在"$"前面就好了。

  1. sed "{\$ a\
  2. $file_name
  3. }" $tmp
复制代码


美元符号"$"在shell中是有特殊含义的,上面第一个"$"实际上是要传递给sed的,它代表最后一行。为了防止shell自作主张地解释"$"的特殊含义,通常用两种办法,一种就是前面说的用单引号,但是那样"$file_name"就不会被展开为"This is new file." 了,这显然不是我们想要的;另一种就是用反斜杠来屏蔽后面一个字符的特殊含义。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2003-06-05 17:58 |只看该作者

sed的函数替换问题!!在线等待!!谢谢!!!

如果只是向一文件末尾添加内容,有更加单的方法:   

  1. file_name="This is new file."
  2. echo $file_name >> file-to-be-appended
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2003-06-05 18:06 |只看该作者

sed的函数替换问题!!在线等待!!谢谢!!!

原帖由 "大脚王" 发表:
那么再SED中如果要增加一行,到底该如何处理呢??
顺道问一下,修改后的文件如何保存?是不是非要一个中间文件才可以呢??
   

sed的a命令和i命令用在脚本文件中不会出问题,用在命令行可不容易搞定。

中间文件也有个好处啊,出错后不会影响原来的文件。当然文件很大的话,开销也会较大。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP