【问题标题】:sed regexp capture groups on Ubuntu 18.04.3 LTSUbuntu 18.04.3 LTS 上的 sed 正则表达式捕获组
【发布时间】:2020-03-14 05:10:04
【问题描述】:

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

我目前正在使用命令:

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

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

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

【问题讨论】:

标签: regex ubuntu sed capture-group


【解决方案1】:

你可以使用:

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"

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 2020-09-14
    • 2017-03-02
    • 2012-10-19
    • 2018-03-11
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多