sed regexp捕获组在Ubuntu 18.04.3 LTS上

时间:2019-11-18 19:01:11

标签: regex ubuntu sed capture-group

我正在尝试在Ubuntu 18.04.3 LTS上使用1.2.3将类似1 : 2 : 3的字符串解析为类似sed的字符串。

我当前正在使用以下命令:

$> echo 1.2.3 | sed -r 's/(\d+)\.(\d+)\.(\d+)/\1 : \2 : \3/'

不幸的是,它输出1.2.3而不是1 : 2 : 3

当我在Alpine 3.10下运行相同的命令时,它会按预期工作。

1 个答案:

答案 0 :(得分:0)

您可以使用:

echo '1.2.3' | sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+)/\1 : \2 : \3/'

1 : 2 : 3

\d[[:digit:]]的perl属性,在大多数sed中不可用

您还可以使用:

sed -E 's/([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/\1 : \2 : \3/' <<< "1.2.3"