使用sed删除一行中的重复单词

时间:2012-05-15 11:48:01

标签: sed

纯粹学术,但令我感到沮丧。

我想纠正这个文字:

there there are are multiple lexical errors in this line line

使用sed。我到目前为止:

sed 's/\([a-z][a-z]*[ ,\n][ ,\n]*\)\1/\1/g' < file.text

除了最后翻了一句话之外,它还纠正了所有内容!

there are multiple lexical errors in this line line

请问一位大师请解释为什么上面的内容没有处理最后的文字?

1 个答案:

答案 0 :(得分:10)

这是因为在最后一种情况下(line)你的正则表达式内存1中会有line(后跟一个空格的行),你正在搜索它的重复。由于在匹配失败的最后line之后没有空格。

要解决此问题,请在结束字line后面添加一个空格。

或者,您可以将正则表达式更改为:

sed -e 's/\b\([a-z]\+\)[ ,\n]\1/\1/g'

See it