强制sed忽略空格

时间:2017-05-05 18:36:02

标签: xml bash shell unix sed

我正在使用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>

1 个答案:

答案 0 :(得分:1)

我一发布这个问题,我就知道了。我需要你使用

命令看起来像这样

sed -i 's|<NS1:message>.*<|<NS1:message>'"$text"'<|g' $workfile