Regex sed与正则表达式
因此,我做了一个常规的EPRESION,它与egrep配合得很好,并且完成了工作:Regex sed与正则表达式,regex,bash,sed,grep,Regex,Bash,Sed,Grep,因此,我做了一个常规的EPRESION,它与egrep配合得很好,并且完成了工作: egrep "(^|[ ]+)([^ ]+)([ ]+)\2([ ]+|$)" $1 我试着在sed上使用它,但由于某种原因它不起作用 sed '/\(^|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+|$\)/!d' $1 如果有人能帮助我理解它的问题是什么,我如何使用正则表达式,比如在egrep中使用sed,或者解释sed如何使用回溯 垂直条(交替)也应转义: sed '/\(^|
egrep "(^|[ ]+)([^ ]+)([ ]+)\2([ ]+|$)" $1
我试着在sed上使用它,但由于某种原因它不起作用
sed '/\(^|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+|$\)/!d' $1
如果有人能帮助我理解它的问题是什么,我如何使用正则表达式,比如在egrep中使用sed,或者解释sed如何使用回溯 垂直条(交替)也应转义:
sed '/\(^|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+|$\)/!d' "$1" # Yours.
sed '/\(^\|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+\|$\)/!d' "$1" # correct.
但是,如果您在sed中调用扩展的rexexp,则更容易:
sed -E '/(^|[ ]+)([^ ]+)([ ]+)\2([ ]+|$)/!d' "$1"
使用
-r
(或-E
)选项启用扩展正则表达式风格。这不应该是sed中的\\\
吗?值得注意的是-r
是GNU-sed,而-E
适用于BSD和GNU(未文档化)竖条称为替代。