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>
ノードの内容をmyテキストに置き換える必要があります。私のテキストを含む変数には空白がないたびに動作します。スペースがあるとすぐにsedがエラーをスローします。 sedの
:-e式#1を、120文字:ここで終端されていない `s'のコマンド
を私は次のsedを使用
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 -i 's|<NS1:message>.*<|<NS1:message>'$text'<|g' $workfile
ただし、上記のコマンドはスペースで毎回壊れます。 sedが他の文字と同じように処理するように、どうすれば空白から脱出できますか?
XMLパーサ(xmlstarlet、例えば)を使用してくださいように見える
「よ使用を必要としていました。 – Cyrus
私はXMLパーサを使用することができれば、私はそれについて尋ねているだろうが、私はSEDを使用する必要があります – svager
@svagerなぜsedを使う必要があるのですか? – 123