匹配字符串加上任何非空白字符并插入空格

时间:2014-09-03 19:20:29

标签: regex string replace sed

我正在尝试匹配并替换很多文件中的字符串。

要搜索的字符串:

</ANON>[any non-whitespace char], e.g. "</ANON>." or "</ANON>)"

我想在标记和非空白字符之间粘贴一个空格。

我尝试用sed这样做:

sed -i -e 's/<\/ANON>/S/<\/ANON> /S/g'

但是,这不起作用。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

sed -i -e 's|\(</ANON>\)\([^[:space:]]\)|\1 \2|g' file

它不是Perl,你不能将\ S用于非空格字符。您还应捕获组并在替换部件中使用它们。你也不能使用/ S因为1)它是错误的2)sed使用斜线来分离带有模式,替换和标志的部分。

P.S。或者,如果您愿意,可以使用Perl:

perl -p -i -e 's|(</ANON>)(\S)|$1 $2|g' file