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

Shell脚本更新CSV的ASOF_DATE列出现空值,请求排查问题

排查Shell脚本更新CSV文件ASOF_DATE列为空值的问题

尝试用Shell脚本更新CSV文件,将ASOF_DATE列的值替换为指定日期,但执行后该列返回空值,以下是相关信息:

示例输入数据

ASOF_DATE,CUSIP,Current Face,Market Value
'04/08/2024',BENRDUZU0,-400000000
'04/08/2024',BENRDUZR7,-300000000
'04/08/2024',BENRE4H37,-225000000
'04/08/2024',BENRDUYW7,-250000000

原Shell脚本

#!/bin/bash
if [ "$#" -lt 1 ]; then
    echo "Argument is missing"
    exit 1
fi

asOnDate=$1
FILE_PATH=/awsdatalake/data/inbound/file/SRC_TPGCF/
if [ ! -f ${FILE_PATH}CFG_ANALYTICS_*.csv ]
then
    echo "File does not exist"
    exit 2
else
    echo "File found."
    for file in ${FILE_PATH}CFG_ANALYTICS_*.csv 
    do
        echo "$file"
        awk -v date="$asof_date" -F, 'BEGIN {OFS=","} {if (NR==1) {print $0} else {if (NR>1) {$1=date; print}}}' "$file" > temp_file && mv temp_file "$file"
    
        echo "Current date $asof_date added to the ASOF_DATE column in $file_path"
    done
fi

问题原因及修复方案

1. 变量名大小写拼写错误

脚本中定义的变量是asOnDate,但在awk调用和后续echo中使用的是$asof_date,大小写不匹配导致变量值为空,替换后ASOF_DATE列自然为空。

2. 文件路径变量错误

最后echo语句中使用了未定义的$file_path(小写),而实际循环中的文件变量是$file,正确的变量名应该是$file。

3. 多文件匹配时的检查逻辑问题

[ ! -f ${FILE_PATH}CFG_ANALYTICS_*.csv ]在匹配到多个文件时会报错,因为-f只能检查单个文件。可以开启nullglob选项,让匹配不到文件时返回空,再判断是否有文件存在。

4. 可选:保留日期的单引号格式

原数据中ASOF_DATE值带单引号,若传入的日期没有引号,替换后会丢失该格式,可根据需求给传入的日期添加单引号。

修复后的脚本

#!/bin/bash
if [ "$#" -lt 1 ]; then
    echo "Argument is missing"
    exit 1
fi

# 统一变量名,可选:给日期添加单引号以匹配原格式
asOnDate="'$1'"
FILE_PATH=/awsdatalake/data/inbound/file/SRC_TPGCF/

# 开启nullglob,避免无匹配时返回原通配符字符串
shopt -s nullglob
files=(${FILE_PATH}CFG_ANALYTICS_*.csv)
shopt -u nullglob

if [ ${#files[@]} -eq 0 ]; then
    echo "File does not exist"
    exit 2
else
    echo "File found."
    for file in "${files[@]}"
    do
        echo "$file"
        # 使用正确的变量名asOnDate,简化awk逻辑
        awk -v date="$asOnDate" -F, 'BEGIN {OFS=","} NR==1{print; next} {$1=date; print}' "$file" > temp_file && mv temp_file "$file"
    
        echo "Current date $asOnDate added to the ASOF_DATE column in $file"
    done
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:25:12