我有一个xml文件,其行应如下所示:
<item id=""><myname>FIRST NAME</myname><myurl>http://etc.com</myurl></item>
我可以轻松替换下面的" myurl="
,使该行看起来像上面那样。
<item id=""><myname>FIRST NAME" myURL="http://etc.com</myurl></item>
不幸的是,他们中的大多数都是这样的,b / t中的空格量不同:
<item id=""><myname>FIRST NAME"
myURL="http://etc.com</myurl></item>
我似乎无法使用b / t字符中的空格替换工作SED
答案 0 :(得分:1)
你正在寻找正则表达式's/ */ /g'
吗?
对于两个或多个空格的所有字符串,这将替换单个空格。
答案 1 :(得分:0)
sed '/myname>.*\"\s*$/N;s|\"\s*\n*\s*myURL=\"|</myname><myurl>|' file.xml
首先测试线是否不完整。如果是,则将下一行放入模式空间。在任何一种情况下,它都会用原始文本替换所需的文本。
顺便说一句,如果有人能告诉我一种方法来匹配字符集中模式空间中的换行符,我将不胜感激。例如,[\s\n]*
代替上述表达式中的\s*\n*\s*
。
输入:
<item id=""><myname>FIRST NAME" myURL="http://etc.com</myurl></item>
<item id=""><myname>FIRST NAME"
myURL="http://etc.com</myurl></item>
<item id=""><myname>FIRST NAME" myURL="http://etc.com</myurl></item>
输出:
<item id=""><myname>FIRST NAME</myname><myurl>http://etc.com</myurl></item>
<item id=""><myname>FIRST NAME</myname><myurl>http://etc.com</myurl></item>
<item id=""><myname>FIRST NAME</myname><myurl>http://etc.com</myurl></item>