所以我做了这个定期的表演,与egrep配合得很好,它完成了工作:
egrep "(^|[ ]+)([^ ]+)([ ]+)\2([ ]+|$)" $1
我尝试在sed上使用它,但由于某种原因它不起作用。
sed '/\(^|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+|$\)/!d' $1
如果有人可以帮我理解它的问题是什么,我如何使用像egrep中的正则表达式但是使用sed,或解释sed如何与回溯一起使用?
答案 0 :(得分:0)
垂直条(交替)也应该转义:
sed '/\(^|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+|$\)/!d' "$1" # Yours.
sed '/\(^\|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+\|$\)/!d' "$1" # correct.
但是如果你在sed中调用扩展的rexexp会更容易:
sed -E '/(^|[ ]+)([^ ]+)([ ]+)\2([ ]+|$)/!d' "$1"