Chinaunix
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
[打印本页]
作者:
大脚王
时间:
2003-06-05 16:16
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
需要往一个文本里面添加数据,使用如下命令
file_name="This is new file."
sed "{$ a\
$file_name
}" $tmp
报告如下:sed: Function {$ a cannot be parsed.
如果不用“"”,使用“'”,则不能引用参数,那么再SED中如果要增加一行,到底该如何处理呢??
顺道问一下,修改后的文件如何保存?是不是非要一个中间文件才可以呢??
作者:
woodie
时间:
2003-06-05 16:55
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
这里应该用单引号,屏蔽shell中"$"字符的特殊含义。把$原样同其他用单引号括启的脚本一起传递给sed处理。
作者:
大脚王
时间:
2003-06-05 17:18
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
能写个例子吗??我还是不太明白??
作者:
woodie
时间:
2003-06-05 17:36
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
sorry, 没看到你还需要展开变量。那就用"\"加在"$"前面就好了。
sed "{\$ a\
$file_name
}" $tmp
复制代码
美元符号"$"在shell中是有特殊含义的,上面第一个"$"实际上是要传递给sed的,它代表最后一行。为了防止shell自作主张地解释"$"的特殊含义,通常用两种办法,一种就是前面说的用单引号,但是那样"$file_name"就不会被展开为"This is new file." 了,这显然不是我们想要的;另一种就是用反斜杠来屏蔽后面一个字符的特殊含义。
作者:
woodie
时间:
2003-06-05 17:58
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
如果只是向一文件末尾添加内容,有更加单的方法:
file_name="This is new file."
echo $file_name >> file-to-be-appended
复制代码
作者:
woodie
时间:
2003-06-05 18:06
标题:
sed的函数替换问题!!在线等待!!谢谢!!!
原帖由 "大脚王" 发表:
那么再SED中如果要增加一行,到底该如何处理呢??
顺道问一下,修改后的文件如何保存?是不是非要一个中间文件才可以呢??
sed的a命令和i命令用在脚本文件中不会出问题,用在命令行可不容易搞定。
中间文件也有个好处啊,出错后不会影响原来的文件。当然文件很大的话,开销也会较大。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2