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

Linux系统中如何在文本行出现数字时对字符进行拆分

Linux文本行按首个数字位置拆分实现方案

针对文本行从第一个数字出现位置拆分、前后段用两个空格分隔的需求,以测试文件testfile.txt(内容为demo_test_file_2022-06-06)为例,可通过以下两种常用命令实现,最终输出结果为demo_test_file_ 2022-06-06。

方案1:sed 实现(轻量简洁)

  • 仅输出结果到终端,不改动原文件:
sed 's/^\([^0-9]*\)\([0-9].*\)$/\1  \2/' testfile.txt
  • 需要直接修改原文件时,加入-i参数:
sed -i 's/^\([^0-9]*\)\([0-9].*\)$/\1  \2/' testfile.txt

逻辑说明:正则分别捕获行首到第一个数字前的所有非数字内容、第一个数字到行尾的内容,替换时在两段内容中间插入两个空格;行内无数字时会原样输出,不会产生异常改动。

方案2:awk 实现(扩展性更强)

如果后续需要调整分隔规则、添加额外文本处理逻辑,可使用awk的字符串匹配能力实现,兼容无数字行的原样输出:

awk '{
    if (match($0, /[0-9]/)) {
        print substr($0, 1, RSTART-1) "  " substr($0, RSTART)
    } else {
        print $0
    }
}' testfile.txt

逻辑说明:通过match函数定位行内第一个数字的下标位置,分别截取数字前后的子串,拼接两个空格后输出;未匹配到数字的行直接打印原文。

结果验证

命令执行完成后,可执行cat testfile.txt查看文件内容,确认输出符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:51:59