Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex sed与正则表达式_Regex_Bash_Sed_Grep - Fatal编程技术网

Regex sed与正则表达式

Regex sed与正则表达式,regex,bash,sed,grep,Regex,Bash,Sed,Grep,因此,我做了一个常规的EPRESION,它与egrep配合得很好,并且完成了工作: egrep "(^|[ ]+)([^ ]+)([ ]+)\2([ ]+|$)" $1 我试着在sed上使用它,但由于某种原因它不起作用 sed '/\(^|[ ]\+\)\([^ ]\+\)\([ ]\+\)\2\([ ]\+|$\)/!d' $1 如果有人能帮助我理解它的问题是什么,我如何使用正则表达式,比如在egrep中使用sed,或者解释sed如何使用回溯 垂直条(交替)也应转义: sed '/\(^|

因此,我做了一个常规的EPRESION,它与egrep配合得很好,并且完成了工作:

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(未文档化)
竖条称为替代。