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

使用awk等bash命令按最后一个点分割字符串并新增列存储末尾部分

解决方案

方法1:split拆分后拼接前缀(兼容性更好,适用于所有awk版本)

直接使用如下命令即可适配任意数量点号的场景:

awk '{
    # 按点拆分第一列,n为拆分后的元素总数
    n = split($1, arr, ".")
    # 取最后一个元素作为后缀
    suffix = arr[n]
    # 拼接除最后一个元素外的所有内容作为前缀
    prefix = arr[1]
    for (i = 2; i < n; i++) {
        prefix = prefix "." arr[i]
    }
    # 按要求用制表符分隔输出
    print prefix "\t" suffix "\t" $2
}' file.txt

方法2:正则匹配提取(写法更简洁,适用于gawk等支持gensub的版本)

通过正则直接匹配最后一个点的前后内容,无需循环:

awk '{
    prefix = gensub(/(.*)\.[^.]*$/, "\\1", 1, $1)
    suffix = gensub(/.*\.([^.]*)$/, "\\1", 1, $1)
    print prefix "\t" suffix "\t" $2
}' file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:06:00