You need to enable JavaScript to run this app. Bash如何按#和/分割文本为制表符分隔列并补全Unknown
优惠活动
大模型
产品
解决方案
定价
更多

Bash如何按#和/分割文本为制表符分隔列并补全Unknown

你当前出现空白的原因是:拆分#后内容时,如果没有/,对应的第二字段为空,没有做默认值填充。你可以直接用单条awk命令一步完成需求,无需生成多个临时文件:

awk -F '[#/]' 'BEGIN{OFS="\t"} {
    if(NF == 2) {
        print $1, "Unknown", "Unknown"
    } else {
        print $1, $2, $3
    }
}' te-hierarchy.txt

命令逻辑说明:

  • 输入分隔符FS设置为[#/],同时识别#和/作为拆分标记,一次性完成全部字段拆分
  • 内置变量NF为当前行拆分后的字段总数:
    • 当NF=2时,说明#后没有/,直接给后两列填充Unknown
    • 当NF=3时,说明#后存在/,直接输出拆分后的三个字段即可
  • BEGIN{OFS="\t"}指定输出分隔符为制表符,符合输出格式要求

如果你想调整原有多步临时文件的方案,只需要在拆分order.txt和family.txt时补充空值判断即可:

# 拆分得到order.txt,空值填充Unknown
cat types.txt | awk -F '/' '{print $1==""?"Unknown":$1}' > order.txt
# 拆分得到family.txt,空值填充Unknown
cat types.txt | awk -F '/' '{print $2==""?"Unknown":$2}' > family.txt

内容的提问来源于stack exchange,提问作者R-MASHup

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:36:02