如果模式后没有空格,则替换Sed

时间:2012-09-06 17:15:42

标签: sed awk

我需要在标记内使用.替换.*space* ...我做了,但是如果没有空间我需要替换它在.之后 - 这将是一个补丁过程。 1600个文件。

示例:

sed -i -e "/<b>/ {s/\./\. /}" file.txt会将.替换为.*space* 从这个:

<div class="pontos"><b>TERMINAL V.OFICINAS</b></div>

到这个

<div class="pontos"><b>TERMINAL V. OFICINAS</b></div>

但是如果在文件中,我已经有了

如果点后面没有空格,我需要使sed只是替换。

如果可能,请解释表达式中将作为“if”的内容。 谢谢。

PS:也可以使用awk。

2 个答案:

答案 0 :(得分:2)

 sed 's/\.\([^ ]\)/. \1/g' input

 \.\([^ ]\): match a dot followed by a non-space character,
             also remember the non-space character

 . \1      : replace the match with a dot, space, and the
             non-space character

答案 1 :(得分:2)

这甚至可以在一行结束时使用

sed 's/\. \{0,1\}/\. /g' input