我正在使用sed处理XML文件。要替换的文件的内容如下所示。
<NS1:myService>
<NS1:code>1</NS1:code>
<NS1:timestamp>Event_Time_Stamp</NS1:timestamp>
<NS1:log>
<NS1:logLevel>some_level</NS1:logLevel>
<NS1:loggerName>log_back</NS1:loggerName>
<NS1:message>loggable_message</NS1:message>
<NS1:node>none</NS1:node>
<NS1:host>my_host</NS1:host>
</NS1:log>
</NS1:myServices>
我需要用我的文本替换节点的内容。每当包含我的文本的变量没有空格时,它都有效。只要有空间sed就会抛出错误。
sed:-e表达式#1,字符120:未终止的`s&#39;命令
以下是我在脚本中创建消息的方法
text="APPLICATION:\t\t$app\n"
text=$text"RECEIVER:\t\t$receiver\n"
text=$text"LOGGABLE MESSAGE:\t$message\n"
text=$text"SENDER:\t\t$sender\n"
text=$text"DATE CREATED:\t$created\n"
我使用以下sed语句来替换
sed -i 's|<NS1:message>.*<|<NS1:message>'$text'<|g' $workfile
然而,上述命令每次都在空间中断开。我怎样才能逃避空白区域,所以sed会像其他任何角色一样处理它?</ p>
答案 0 :(得分:1)
我一发布这个问题,我就知道了。我需要你使用“
命令看起来像这样
sed -i 's|<NS1:message>.*<|<NS1:message>'"$text"'<|g' $workfile