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

如何在awk中切割字段并对比首个字段生成期望的输出列

实现方案

直接修改你的awk命令即可,完整命令如下:

awk '{
    split($0, arr, "/");
    # 第一个全大写字段转小写作为匹配目标
    target = tolower(arr[1]);
    prefix = arr[1];
    # 从第二个路径分段开始遍历找匹配项
    for(i=2; i<=length(arr); i++){
        prefix = prefix "/" arr[i];
        if(index(arr[i], target) != 0){
            break;
        }
    }
    # 输出原行、首字段、匹配到的前缀,可自行调整\t为对应数量的空格修改列间隔
    print $0 "\t" arr[1] "\t" prefix;
}' input > output

逻辑说明

  • 先用split按/分割整行内容到数组arr,arr[1]就是每行第一个全大写字段
  • 把arr[1]转成全小写作为匹配关键词target
  • 从第二个路径分段开始遍历,每遍历一段就拼到前缀变量prefix里,当当前分段包含target时停止遍历
  • 最后按要求输出三列内容即可

输出验证

运行上述命令后输出结果和你期望的完全一致:

ADC1/asf/sd/df_adc1/125125	ADC1	ADC1/asf/sd/df_adc1
AED1/asf/sd/df_aed1/asfk	AED1	AED1/asf/sd/df_aed1
ASQ2/asf/df_asq2/aks	ASQ2	ASQ2/asf/df_asq2
ABX5/df_abx5/asf/sd/sdgqw	ABX5	ABX5/df_abx5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:18:03