shell - 从 csv 文件转换日期格式时出现“无效日期”错误消息?-壳
问题描述
我是 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 $4}' | awk -F, '{"date +%A -d\""$1 "\""| getline dte;$1=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
推荐阅读
- sql - 在 Redshift 中永远运行的简单查询
- python - 在 AWS 上运行 doc2vec 的服务是什么?
- r - 在 ggplot 比例条形图上显示 p 值
- swift - SwiftUI:对齐问题、样式表、填充
- java - 此应用无权使用 Firebase 身份验证。请确认在 Firebase 中配置了正确的包名称和 SHA-1
- html - 从 less 文件到 css 生产文件的注释
- bash - 使用directoris并将结果保存在相同的位置
- python - 如何使用 Flask 进行重定向?
- angular - SyntaxError: Arg 字符串在新函数处提前终止参数 (
) - java - 注入被测服务的服务模拟或调用方法