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會像處理其他字符一樣處理它?
使用XML解析器(xmlstarlet,如)。 – Cyrus
如果我可以使用XML解析器我會問這一點,但我需要使用SED 。 – svager
@svager爲什麼你需要使用sed? – 123