首页 > 解决方案 > Ubuntu 18.04.3 LTS 上的 sed 正则表达式捕获组

问题描述

我正在尝试将一个1.2.3看起来像在 Ubuntu 18.04.3 LTS 上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 下运行相同的命令时,它按预期工作。

标签: regexubuntusedcapture-group

解决方案


您可以使用:

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

1 : 2 : 3

\d是 perl 属性,[[:digit:]]在大多数情况下不可用sed

您还可以使用:

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

推荐阅读