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

如何修改AWK命令实现.desktop文件输出三列换行且无尾逗号?

可行的AWK命令修改方案

方案一:数组存储+计数器控制换行

这个方案通过数组暂存提取的字段,每收集3个字段就输出一行,自然避免尾逗号:

/^(Name|Exec|Icon)=/ {
    sub(/^(Name|Exec|Icon)=/, "")
    arr[++cnt] = $0
    if (cnt == 3) {
        print arr[1] ", " arr[2] ", " arr[3]
        cnt = 0
    }
}
END {
    # 处理文件中可能剩余的不足3个的字段(如果存在)
    if (cnt > 0) {
        line = arr[1]
        for (i=2; i<=cnt; i++) {
            line = line ", " arr[i]
        }
        print line
    }
}
/usr/share/applications/*.desktop

方案二:printf动态控制分隔符

利用计数器和printf直接控制输出的分隔符,写法更简洁:

/^(Name|Exec|Icon)=/ {
    sub(/^(Name|Exec|Icon)=/, "")
    printf "%s%s", $0, (++cnt % 3 ? ", " : "\n")
}
END {
    # 如果最后一组不足3个字段,补一个换行符保证格式统一
    if (cnt % 3 != 0) print ""
}
/usr/share/applications/*.desktop

说明

  • 两个方案都会先匹配Name=/Exec=/Icon=开头的行,去掉前缀后提取内容。
  • 方案一逻辑更直观,适合需要后续扩展处理字段的场景;方案二代码更紧凑,适合快速实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:18