反向引用
使用转义括号,你可以在模式中定义捕获组,该模式可以使用\1
在替换字符串中进行反向引用:
$ echo Hello world! | sed 's/\(Hello\) world!/\1 sed/'
Hello sed
有多个组:
$ echo one two three | sed 's/\(one\) \(two\) \(three\)/\3 \2 \1/'
three two one
Version = GNU sed
使用扩展正则表达式时(请参阅“ 其他选项” ),默认情况下,括号将执行分组,而不必进行转义:
$ echo one two three | sed -E 's/(one) (two) (three)/\3 \2 \1/'
three two one
可以使用 [[:alnum:]_]\{1,\}
表达式匹配由字母,数字和下划线组成的单词:
$ echo Hello 123 reg_exp | sed 's/\([[:alnum:]_]\{1,\}\) \([[:alnum:]_]\{1,\}\) \([[:alnum:]_]\{1,\}\)/\3 \2 \1/'
reg_exp 123 Hello
Version = GNU sed
序列\w
相当于 [[:alnum:]_]
$ echo Hello 123 reg_exp | sed 's/\(\w\w*\) \(\w\w*\) \(\w\w*\)/\3 \2 \1/'
reg_exp 123 Hello