Ubuntu 18.04.3 LTS 上的 sed regexp 捕获组

sed regexp capture groups on Ubuntu 18.04.3 LTS

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

我目前正在使用命令:

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

Unfo运行它输出 1.2.3 而不是 1 : 2 : 3

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

您可以使用:

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

1 : 2 : 3

\d[[:digit:]] 的 perl 属性 并且在大多数 sed

中不可用

您还可以使用:

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