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

Shell脚本使用awk给文本文件添加表头不生效如何解决

问题排查及修复方案

错误原因

  • awk 命令未指定输入源:awk默认从标准输入读取内容,当前写法没有传递任何输入文件给awk,命令会一直阻塞等待输入,不会输出表头内容到目标文件。
  • 仅配置了SP类输出文件的表头插入逻辑,剩余SS、SG、GS三类输出文件无对应表头插入代码。
  • 纯输出固定表头无需调用awk,使用echo命令更简洁高效。

修复后代码

start_MERGE_JobRec()
{
   FindBatchNumber

   export TEMP_SP_FORMAT="Temp_${file_indicator}_SP_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_INSTANCE[0-9][0-9].txt"
   export TEMP_SS_FORMAT="Temp_${file_indicator}_SS_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_INSTANCE[0-9][0-9].txt"
   export TEMP_SG_FORMAT="Temp_${file_indicator}_SG_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_INSTANCE[0-9][0-9].txt"
   export TEMP_GS_FORMAT="Temp_${file_indicator}_GS_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_INSTANCE[0-9][0-9].txt"


   export SP_OUTPUT_FILE="RTBCON_${file_indicator}_SP_${ONLINE_DATE}${TIME}_${BATCH_NUMBER}.txt"
   export SS_OUTPUT_FILE="RTBCON_${file_indicator}_SS_${ONLINE_DATE}${TIME}_${BATCH_NUMBER}.txt"
   export SG_OUTPUT_FILE="RTBCON_${file_indicator}_SG_${ONLINE_DATE}${TIME}_${BATCH_NUMBER}.txt"
   export GS_OUTPUT_FILE="RTBCON_${file_indicator}_GS_${ONLINE_DATE}${TIME}_${BATCH_NUMBER}.txt"

  #---------------------------------------------------
  # Add header at the start for each file
  #---------------------------------------------------

  # 定义表头变量,避免重复写相同字符串
  HEADER="recordType|lifetimeId|MSISDN|status|effectiveDate|expiryDate|oldMSISDN|accountType|billingAccountNumber|usageTypeBen|IMEI|IMSI|cycleCode|cycleMonth|firstBillExperience|recordStatus|failureReason"
  
  # 先写入表头到各输出文件,用>覆盖新建避免旧内容干扰
  echo "$HEADER" > "$SP_OUTPUT_FILE"
  echo "$HEADER" > "$SS_OUTPUT_FILE"
  echo "$HEADER" > "$SG_OUTPUT_FILE"
  echo "$HEADER" > "$GS_OUTPUT_FILE"

  # 再追加临时文件内容到对应输出文件
  find . -maxdepth 1 -type f -name "${TEMP_SP_FORMAT}" -exec cat {} + >> "$SP_OUTPUT_FILE"
  find . -maxdepth 1 -type f -name "${TEMP_SS_FORMAT}" -exec cat {} + >> "$SS_OUTPUT_FILE"
  find . -maxdepth 1 -type f -name "${TEMP_SG_FORMAT}" -exec cat {} + >> "$SG_OUTPUT_FILE"
  find . -maxdepth 1 -type f -name "${TEMP_GS_FORMAT}" -exec cat {} + >> "$GS_OUTPUT_FILE"
}

额外优化说明

  • 新增了表头变量,后续修改表头只需要改一处即可
  • 给变量引用加了双引号,避免路径/文件名包含空格时执行出错
  • 写入表头时使用>覆盖模式,保证如果目标文件已存在时,表头始终在文件第一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:45:11