unix中的'sed'命令

时间:2017-08-19 18:21:16

标签: unix sed

当我运行以下内容时:

$ echo "123 abc" | sed 's/[0-9]*/&/'

输出:123 abc

但是当我运行以下命令时:

echo "123 abc" | sed 's/[0-9]*/<&>/'

输出为:<123> abc

为什么不输出<123 abc>

1 个答案:

答案 0 :(得分:4)

sed命令后的表达式用于搜索&amp;取代

[0-9]*部分是搜索,它描述了应该用regex的符号替换哪个表达式。在提供[0-9]*作为正则表达式时,您要求sed在文本中找到数字0到9的任何序列,并将其替换为替换表达式。

<&>部分是替换,它描述了应该替换前表达式的表达式。 &字符很特殊,允许您引用搜索正则表达式找到的令牌。

在您的第一个示例中,您使用了&来保留正则表达式找到的数字部分,在后面的示例中,您使用了<&>来包装正则表达式在{{{}中找到的数字部分。 1}}。