"invalid date" 从 csv 文件转换日期格式时出现错误消息? -shell

"invalid date" error message when converting date format from csv file ? -shell

我是 shell 脚本编写的新手,我正在尝试从日期格式为 :

的 csv 列中获取星期几
16/10/2015
19/06/2010
16/09/2013
4/7/2008
29/12/2017

我使用了 date -%A 并得到了转换的结果,但不是全部,仍然收到错误消息和结果:

date: invalid date ‘16/10/2015’ 
date: invalid date ‘19/06/2010’ 
date: invalid date ‘16/09/2013’ 
Monday 
date: invalid date ‘29/12/2017’ 
Monday

预期输出:

Friday
Saturday
Monday
Wednesday
Friday

我的代码:

cat file.csv | awk -F "," 'NR>1 {print }' | awk -F, '{"date +%A -d\"" "\""| getline dte;=dte}1' OFS=","

我还尝试在转换之前将值重新格式化为日期类型以确保但仍然收到错误消息,我有一个大数据文件,这就是为什么我试图在 awk 中循环整个列

能否请您尝试纯bash(仅使用提供的样本进行测试和编写)。

while read line
do
  IFS='/' read -ra arr <<< "$line"
  newDate=${arr[2]}/${arr[1]}/${arr[0]}
  date -d  $newDate +%A
done < "Input_file"

对于提供的样本,以下是输出。

Friday
Saturday
Monday
Friday
Friday

使用 GNU awk 将日期快速转换为星期几的全名:

awk 'BEGIN{FS="/"} {t=sprintf("%d %d %d 0 0 0",,,); print strftime("%A",mktime(t))}' Input_file

参见:gawk - Date and time calculation functions