我需要幫助將此xml文件格式化爲以逗號分隔的形式導入到表中。我玩過sed和awk,但這是一場艱苦的鬥爭。使用sed或awk格式化爲逗號分隔的XML
例子:
<requestID>224</requestID>,
<ErrorMessage>The following is required: PersonName </ErrorMessage>,
<?xml version="1.0" encoding="UTF-8"?><TCRMService xmlns="http://www.ibm.com/mdm/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/mdm/schema MDMDomains.xsd"><RequestControl><requestID>224</requestID><DWLControl></TCRMService>
<requestID>615</requestID>,
<ErrorMessage>The following is required: PersonName </ErrorMessage>,
<?xml version="1.0" encoding="UTF-8"?><TCRMService xmlns="http://www.ibm.com/mdm/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/mdm/schema MDMDomains.xsd"><RequestControl><requestID>224</requestID><DWLControl></TCRMService>
結果:
<requestID>224</requestID>,<ErrorMessage>The following is required: PersonName </ErrorMessage>,<?xml version="1.0" encoding="UTF-8"?><TCRMService xmlns="http://www.ibm.com/mdm/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/mdm/schema MDMDomains.xsd"><RequestControl><requestID>224</requestID><DWLControl></TCRMService>
<requestID>615</requestID>,<ErrorMessage>The following is required: PersonName </ErrorMessage>,<?xml version="1.0" encoding="UTF-8"?><TCRMService xmlns="http://www.ibm.com/mdm/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/mdm/schema MDMDomains.xsd"><RequestControl><requestID>224</requestID><DWLControl></TCRMService>
我已經能夠補充,我想
sed 's/ErrorMessage>$/ErrorMessage>,/; s/requestID>$/requestID>,/'
逗號,我認爲這將是較好的去除標籤,但它也刪除所有的空間。
tr -d ' \t' <grep.xml > test.xml
我不知道如何一行移動到前一行的末尾...
所以這部分工作...
awk '{if ($0 ~ /<ErrorMessage>,*/) { printf "%s", $0; getline var; printf "%s\n", var} else {print $0}}' test.xml
<requestID>260</requestID>,
<ErrorMessage>The following is required: PersonName</ErrorMessage>,<?xml version="1.0" encoding="UTF-8"?><TCRMService xmlns="http://www.ibm.com/mdm/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/mdm/schema MDMDomains.xsd"><RequestControl><requestID>260</requestID></TCRMService>
但現在我有麻煩將錯誤消息移動到RequestID行的末尾......
請注意,在ErrorMessage行中,requestID也位於同一行中。我認爲關鍵是看該模式匹配上
</requestID>,
請求ID 615從哪裏來? –
對不起,它假設爲615.每個requestID代表一個唯一的記錄。 – Janie
它仍然在兩條線上都表示對「ID 224」的「請求控制」。 –