2017-05-05 132 views
0

我正在使用sed處理XML文件。要替換的文件的內容如下。強制sed忽略空白空間

<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'命令

下面是我在腳本中創建我的消息

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會像處理其他字符一樣處理它?

+3

使用XML解析器(xmlstarlet,如)。 – Cyrus

+0

如果我可以使用XML解析器我會問這一點,但我需要使用SED 。 – svager

+0

@svager爲什麼你需要使用sed? – 123

回答

1

只要我發佈這個問題,我就明白了。我需要喲使用

命令如下

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