0

ファイル 'sample.json' (JSON):

{
    "jsonrpc": "2.0",
    "method": "configuration.import",
    "params": {
       "format": "xml",
       "source": "REPLACE_ME_WITH_XMLSOURCE"
    },
    "auth": "91ea4764dcab42e8317b399c42985792",
    "id": 1
}

ファイル 'source.xml' (XML、スペースと二重引用符を含む 1 つの長い行):

<?xml version="1.0" encoding="UTF-8"?><zabbix_export>...</zabbix_export>

必要な結果 (param の値として XML を含む JSON):

    ...
   "source": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><zabbix_export>...</zabbix_export>"
...

「source.xml」のコンテンツを変数に配置して sed で使用しようとしましたが、成功しませんでした:

# x=$(cat source.xml)
# sed "s/REPLACE_ME_WITH_XMLSOURCE/$x/" sample.json
sed: -e expression #1, char 80: unknown option to `s'
# sed "s/XMLSOURCE/"$x"/" sample.json
sed: -e expression #1, char 17: unterminated `s' command
#  sed "s/XMLSOURCE/"$x"/" sample.json
...

バリエーションで sed '/REPLACE_ME_WITH_XMLSOURCE/ r source.xml' を使用しようとしましたが、私の sed-fu では解決できません..

ここでグーグルで検索しようとしましたが、..この質問が表示されます..

アドバイスをありがとう

4

2 に答える 2

0
# read the xml file into a variable
xml=$(< source.xml)
# perform the substitution, adding appropriate escaping of quotes
sed 's|\("source": \).*|\1"'"${xml//\"/\\\\\"}"'"|' sample.json 
于 2013-07-15T15:44:17.103 に答える