- 论坛徽章:
- 1
|
本帖最后由 通幽tongyou 于 2015-08-07 10:14 编辑
我是一个刚刚学习shell的菜鸟,遇到了一个问题,困扰了好几天,具体问题是这样的:
有一个文件,文件名为sofia.txt,文件内容如下(只列出一行,问题出现在这一行里):
INTERNAL DSCR : [diff.content]
我的目的:
要用下面这一段内容来替换sofia.txt中的[diff.content]
< * Copyright (c) 2015 Corporation *
---
> * Copyright (c) 2014 Corporation *
25d24
< /* %MID% */
255d253
< 'CCS',A_AUTH ,10000101B ,0FFH
--------
757d754
< 'CCU',L_AUTH ,10000001B ,024H
1104d1100
我的处理方法:
把这一段内容放到了一个变量里面,变量名为difference_history
< * Copyright (c) 2015 Corporation *
---
> * Copyright (c) 2014 Corporation *
25d24
< /* %MID% */
255d253
< 'CCS',A_AUTH ,10000101B ,0FFH
--------
757d754
< 'CCU',L_AUTH ,10000001B ,024H
1104d1100
命令:
sed -i -e "s#\[diff.content\]#$difference_history#g" sofia.txt
遇到的问题:
sed执行之后一直报这个错:
sed: -e expression #7, char 38: unterminated `s' command
ps: 如果我把 变量 difference_history设置为空的话,然后执行sed -i -e "s#\[diff.content\]#$difference_history#g" sofia.txt
那么命令是成功的。
问题的原因可能是difference_history的内容含有一些和分隔符相同的字符,但是我把sed中的分隔符,尝试用“%” " | " 或者“ ;"替换 ,错误提示还是一样的。
请论坛里各位帮忙看一下,有没有什么解决方法,先谢谢了!
|
|