sed 之 & 符号
- & 这个符号,其实很有用,在对相同模式进行处理的时候很方便。
- 我们这边主要讲讲这个& 符号的用法
看一下下面这行命令,你觉得会输出什么?
echo hello|sed 's/hello/(&)/'
看看结果,你是否猜对了:
[www@]$ echo hello|sed 's/hello/(&)/'
(hello)
- 相信大家也明白了,& 符号代表的是你前面的匹配的模式。
- 那么我们也可以用正则表达式去匹配
echo hello| sed 's/[a-z]*/(&)/'
在看一下结果:
[www@]$ echo hello| sed 's/[a-z]*/(&)/'
(hello)
如果说我们多输出一个单词会怎么样?
[www@]$ echo "hello world"| sed 's/[a-z]*/(&)/'
(hello) world
为什么world没有加()呢?这个是前面一篇讲过 sed 是以行为单位的,默认匹配第一个。如果需要把world 也加上 () 那么就需要加上 g 参数。
[www@]$ echo "hello world"| sed 's/[a-z]*/(&)/g'
(hello) (world)
我们是否可以在替换的字符串里添加其他字符呢?当然可以:
[www@]$ echo hello| sed 's/[a-z]*/(&) world/g'
(hello) world
相信大家看了以上几个例子,就都知道这个 & 符号该怎么使用了。