sed 之 \1-9 的作用
- \1 就代表被匹配到的第一个模式,sed 一共可以记录9个模式。这些模式在某些场景下会非常有用,下面就介绍一下怎样使用。
- 模式? 就是正则表达式用 () 扩起来的内容
- 命令行模式下用到了转义字符 \( 和 \)
先看一行命令:
[www@]$ echo hello123|sed "s/\([a-z]*\).*/\1/"
hello
这里我们看到的是正则匹配到的部分是 hello 这个字符串,替换的模式里面是 \1 , 那么 \1 实际上代表的就是 hello 这个字符串,接下来我们看另外一行命令:
[www@]$ echo hello123|sed 's/\([a-z]*\)\([0-9]\{3\}\)/\2\1/'
123hello
看到没? 本来应该输出 hello123 的,现在被替换成了123hello
这行命令里面有两个模式 ([a-z]*) 对应的是 \1 模式1
([0-9]{3}) 对应的是 \2 模式2, 最后替换的内容里面 \2\1 代表的是
模式2 放到模式1 的前面,这就达到了颠倒字符串的目的。
这样是不是很有趣,记住现在是sed最多可以记录9个模式。