反向引用

使用转义括号,你可以在模式中定义捕获组,该模式可以使用\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