You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SED提取指定长度子串并将16位数字拆分为两个8位段

sed命令调整方案

不需要使用sed以外的工具,直接修改正则匹配规则即可实现需求。

你原命令未得到预期结果的核心原因是:第二个捕获组使用.*做贪婪匹配,会一次性捕获两个下划线之间的全部16位数字串,没有做拆分。结合你提到的「中间数字段固定16位、需拆分为两个等长8位段」的前提,直接把捕获规则改为按固定长度匹配即可。

可直接运行的命令

echo "abcd_2222222233333333_jdkj" | sed -e 's/^\(.*\)_\([0-9]\{8\}\)\([0-9]\{8\}\)_\(.*\)$/\2-\3_\1_\4/'

执行输出

运行上述命令后将直接返回你需要的结果:

22222222-33333333_abcd_jdkj

正则逻辑说明

调整后的正则把原来的3个捕获组拆分为4个:

  • 第1组\(.*\):匹配第一个下划线前的前缀字符串(示例中为abcd)
  • 第2组\([0-9]\{8\}\):匹配中间数字段的前8位
  • 第3组\([0-9]\{8\}\):匹配中间数字段的后8位
  • 第4组\(.*\):匹配最后一个下划线后的后缀字符串(示例中为jdkj)

替换阶段直接按目标顺序拼接捕获组,在第2、3组之间插入-即可。

如果中间16位段可能包含非数字字符,可以把[0-9]替换为.匹配任意字符,命令写法如下:

echo "abcd_2222222233333333_jdkj" | sed -e 's/^\(.*\)_\(.\{8\}\)\(.\{8\}\)_\(.*\)$/\2-\3_\1_\4/'

内容的提问来源于stack exchange,提问作者user19277079

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 06:12:21