需要使用shell脚本更新CSV文件中ASOF_DATE列的数据

问题描述 投票:0回答:1

我正在尝试使用 shell 脚本更新现有的 CSV 文件。有一个名为 ASOF_DATE 的列,我尝试将其值替换为当前日期。我正在使用的 shell 脚本对我没有帮助,它返回 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
linux shell awk sed
1个回答
0
投票

asof_date
只是一个未初始化的变量,因此您将用...替换该字段。但添加变量很容易:

        :
        awk -v date="$(date +%F)" -F, 'BEGIN {OFS=","}
            NR>1 {$1=date } 1' "$file" > temp_file &&
        mv temp_file "$file"
        :

您会注意到我还稍微重构了您的 Awk 脚本。您的 shell 脚本还有许多其他问题,但我会按照 https://shellcheck.net/ 进行诊断。

© www.soinside.com 2019 - 2024. All rights reserved.