如何在成对报价中加入东西?

时间:2015-05-22 21:36:37

标签: sed

我想更改以下行:

<A HREF="classes_index_additions.html"class="hiddenlink">

<A HREF="classes_index_additions.html" class="hiddenlink">

(请注意class之前添加的&#39;&#39;但它应该留下像

这样的行
<meta name="generator" content="JDiff v1.1.1">

单独。 sed -e 's|\("[^"]*"\)\([^ />]\)|\1 \2|g'满足第一个条件,但它将其他文本更改为

<meta name="generator" content=" JDiff v1.1.1"/>

如何让sed处理正确的双引号对?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

sed -e 's/"\([^" ]*\)=/" \1=/g'

但是对于sed,正则表达式可能与您不想要的文档的其他部分匹配,因此最好尝试并查看结果以查看是否存在任何意外的副作用!

答案 1 :(得分:0)

您可以尝试将每个属性放在一个新行上,然后在删除新行之前调整每行的尾随空格。

sed -r 's/(\w*="[^"]*")/\n\1/g; s/ *\n/\n/g; s/\n/ /g'

这样做如下:

s/(\w*="[^"]*")/\n\1/g

将每个属性放在一个新行上,以便您的节点看起来像这样

<A 
HREF="classes_index_additions.html"
class="hiddenlink">

之后删除尾随空格

s/ *\n/\n/g

删除新行

s/\n/ /g