这是我得到的CSV文件
2020-03-05,0,146541,118965,5766,88,35
2020-03-06,0,164740,136624,6284,108,42
MISSINGDATE,0,178189,151802,6767,118,44
2020-03-08,0,188518,162008,7134,130,50
2020-03-09,0,196618,171778,7382,166,51
MISSINGDATE,0,210144,184179,7513,247,54
我正在尝试将列中的“ MISSINGDATE”部分更改为相应的日期,从而导致前一行中的日期。
我能够使用sed命令指定“ MISSINGDATE”,但没有找到方法来更改它。
我做的时候
sed -i "s/[MISSINGDATE]/[date that I want]//g" file
它只固定了我输入的日期不适用的日期...
我想要的结果是
2020-03-05,0,146541,118965,5766,88,35
2020-03-06,0,164740,136624,6284,108,42
2020-03-07,0,178189,151802,6767,118,44
2020-03-08,0,188518,162008,7134,130,50
2020-03-09,0,196618,171778,7382,166,51
2020-03-10,0,210144,184179,7513,247,54
bash:
prev_date="1970-01-01"
while IFS=, read -ra fields; do
if [[ ${fields[0]} == "MISSINGDATE" ]]; then
fields[0]=$(date -d "$prev_date + 1 day" "+%F")
fi
(IFS=,; echo "${fields[*]}")
prev_date=${fields[0]}
done < file.csv
假设GNU日期。