2015-11-04 268 views
0

我运行以下sed命令来替换xml文件中的某些东西。sed:命令在SunOS中出现乱码

sed -e '/<AddName>/{ s;<AddName>;<ModifyName>;}' ${modified_name_file} > ${RESOURCES}/tempfile2.xml

这工作正常,在Linux,但在Solaris中有以下错误失败。

sed: command garbled: /<AddName>/{ s;<AddName>;<ModifyName>;}

我有很难有时间去想出解决办法。在SunOS中有没有其他方法可以做到这一点?

+1

你可以尝试使用 “通常”'s'语法:'S// /'?使用其他字母可能是GNU扩展名,SunOS用户区非常严格地是POSIX。 –

+0

大括号是相当不必要的。我怀疑Solaris是否需要在令牌之间的某个位置放置一个换行符,但是如果您修复了语法,以免它们变得不必要,那么代码也应该更具可移植性。只要'sed'/ / /'文件'不会修改任何不包含正则表达式''上匹配的行。 – tripleee

回答

1

用途:

sed '/<AddName>/{ s/<AddName>/<ModifyName>/;}' ${modified_name_file} > ${RESOURCES}/tempfile2.xml 
+1

'sed'记得最后一场比赛,如果你有一个空比赛,它会重新使用它,所以'sed'/ /s // /''会完成同样的事情;但是当然,在替换之前不需要专门检查比赛。看到我上面的其他评论。 – tripleee