我有以下XML:删除或XML的值替换双引号(特定搜索和替换)
<smtng attr="bla"><desc>bla 12" bla</desc></smtng>
而且我想用一些命令(最好从bash可执行文件),以取代"
后12
与"
,但保留它为attr="bla"
部分...
任何想法?
我有以下XML:删除或XML的值替换双引号(特定搜索和替换)
<smtng attr="bla"><desc>bla 12" bla</desc></smtng>
而且我想用一些命令(最好从bash可执行文件),以取代"
后12
与"
,但保留它为attr="bla"
部分...
任何想法?
这可能工作隔离,但你应该使用合适的工具。
sed 's|</\?desc>|\n&|g; s/\(<desc>[^"]*\)"\([^\n]*\n\)/\1\"\2/g;s/\n//g' inputfile
#!/bin/bash
sed -e $'[email protected]<desc>@\\\n<desc>@' -e $'[email protected]</desc>@</desc>\\\[email protected]' | \
while IFS=$'\n\r' read line; do
case "${line}" in
*"<desc>"*)
sed '[email protected]"@\"@' <<<"${line}"
;;
*)
echo "${line}"
;;
esac
done
出于懒惰的我编辑我以前的答案在自己的行
谢谢,但我忘了说它的一个行xml .... :( – 2011-03-13 13:39:01
你能编辑你的问题以反映确切的输入吗? – nhed 2011-03-13 13:48:10
好吧,我刚刚完成了它。 – 2011-03-13 14:07:13
使用xmlstarlet你可以做到以下几点:
# cf. http://www.exslt.org/str/index.html
echo '<smtng attr="bla"><desc>bla 12" bla</desc></smtng>' |
xmlstarlet sel -T -t -m "//smtng/desc" -v "str:replace(.,'"','&quot;')" -n
我没有看到使用字符实体存在的理由。你为什么想这么做? – 2011-03-13 13:15:11
becouse我将这个xml转换为进一步的编辑,并且“在以后的解析中出现问题;) – 2011-03-13 13:18:06
没有正确运行的XML解析器应该会遇到任何问题 – 2011-03-13 13:20:47