【问题标题】:Covert date and time to weekday [YY-MM-DDThh:mm:ss to weekends]隐藏日期和时间到工作日 [YY-MM-DDThh:mm:ss 到周末]
【发布时间】:2022-11-12 02:43:15
【问题描述】:

我有如下 csv 数据,我需要根据“日期”列创建工作日列。

date,user,status
2022-10-31T06:28:16+09:00,JACK,login
2022-10-27T11:43:36+09:00,PETER,login
2022-10-26T07:11:19+09:00,MIKE,notlogin
2022-10-22T23:42:46+09:00,KANE,login
2022-10-21T00:12:38+09:00,VINI,notlogin

我需要添加一列作为工作日,2022-10-31 是星期一.. 如下所示

date,user,status,day,weekday
2022-10-31T06:28:16+09:00,JACK,login,monday
2022-10-27T11:43:36+09:00,PETER,login,thursday
2022-10-26T07:11:19+09:00,MIKE,notlogin,wednesday
2022-10-22T23:42:46+09:00,KANE,login,saturday
2022-10-21T00:12:38+09:00,VINI,notlogin,monday

取自 cmets

我试过使用

$ cat data | awk -F "," '{print $1}' | awk 'NR>1' | awk -F "T" '{print $1}'

但我不太清楚在哪里传递date -d YY-mm-dd "+%A" 命令

【问题讨论】:

  • 到目前为止,您尝试了哪些解决方案?
  • @HatLess,我不擅长 bash 脚本,你能帮忙获得期望的输出吗?我正在对日期列进行 grepping 并尝试将 int 转换为工作日,但它没有打印输出。猫资料 | awk -F "," '{打印 $1}' | awk 'NR>1' | awk -F "T" '{打印 $1}'但我不太清楚该去哪里日期 -d YY-mm-dd "+%A"命令

标签: bash date time


【解决方案1】:

使用 GNU sed

$ sed -E '/^[0-9]/{s/([^T]*).*/echo &,$(date -d '\1' +'%A')/e};s/,[[:alpha:]]+$/L&/;1s/$/,day,weekday/' input_file
date,user,status,day,weekday
2022-10-31T06:28:16+09:00,JACK,login,monday
2022-10-27T11:43:36+09:00,PETER,login,thursday
2022-10-26T07:11:19+09:00,MIKE,notlogin,wednesday
2022-10-22T23:42:46+09:00,KANE,login,saturday
2022-10-21T00:12:38+09:00,VINI,notlogin,friday

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 2014-01-03
    • 2019-12-24
    相关资源
    最近更新 更多