regex - 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 下运行相同的命令时,它按预期工作。
解决方案
您可以使用:
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"
推荐阅读
- node.js - jsonwebtoken 在 nodejs 版本 10x 中返回 null
- python-3.x - 如何让 jupyter 脚本在 ubuntu 液滴上 24/7 全天候运行
- c# - 以静默模式运行可执行文件
- python - 如何从包含多个人名的电子邮件中提取发件人姓名?
- python - 在 python 中执行 OneHotEncoder 后保留列名的最佳方法是什么?
- python - 从列表 Python 中的字符串创建字符串列表
- mysql - MySQL 更新查询(存储过程)的“字段列表”错误中的未知列
- java - 如何在 Java 泛型方法中使用 int 代替 T?
- validation - 小数据集,训练测试拆分或训练验证和测试?
- amazon-web-services - 尝试通过 CLI 标记 Amazon FSx 时遇到问题