寻求可正确合并纯数字序列的sed命令解决方案
解决方案
问题核心是原命令会误匹配非纯数字字符串中的数字片段,导致错误合并。要实现仅合并两个独立的纯数字单词,可使用带单词边界的sed命令:
命令示例
echo "01 02 A01 02" | sed -E 's/\<([0-9]+)\> +\<([0-9]+)\>/\1\2/g'
说明
\<和\>是sed的单词边界标记,确保被匹配的[0-9]+是完整的纯数字单词(前后无其他字母数字字符)+匹配一个或多个分隔空格- 替换操作将两个数字组直接拼接,移除中间空格
执行后输出结果为:0102 A01 02,完全符合预期。
如果使用GNU sed,也可以用\b替代\<和\>,效果一致:
echo "01 02 A01 02" | sed -E 's/\b([0-9]+)\b +\b([0-9]+)\b/\1\2/g'
内容的提问来源于stack exchange,提问作者Lionux
相关产品推荐
相关产品推荐

