【问题标题】:want to change csv file date column format想要更改 csv 文件日期列格式
【发布时间】:2013-06-13 22:03:58
【问题描述】:

我是批处理/shell 脚本的新手。我有一个这样的 CSV 文件:

Id  depId   Name    city    Date                    prod
12345   52845   ken LA  08.08.2013 16:06:53 KLS22
25685   28725   Larry   MA  09.03.2013 16:06:58 KLt35
58345   28545   ken LA  06.08.2013 16:06:53 KLS22
75885   98725   Gow CA  05.04.2013 16:06:58 KLt35

大约 2000 条记录。 col 由制表符分隔。我想将日期列更改为格式:

DD_MM_YYY_hh_mm_ss

我用 awk 尝试过这样的事情:

awk -F '' '{ ("date -d \""$5"\" \"+%Y:%m/%d %T\"") | getline $5; print }' myfile.csv

但我得到错误的输出。

我希望这样的输出:

Id  depId   Name    city    Date                    prod
58345   28545   ken LA  03_06_2013_23_00_00 KLS22
75885   98725   Gow CA  05_06_2013_23_00_00 KLt35

请帮忙!谢谢!!

【问题讨论】:

  • Putty 是我运行 unix 命令的地方
  • 这与问题完全无关。您的命令在 ssh 会话访问的 unix 样式系统上的 shell 内运行,而不是“在 putty 中”;-)
  • csv 文件没有,??
  • 不要告诉我们你有错误的输出。我们看不到。你做。您必须告诉我们您得到的什么输出以及您期望的什么
  • 你仍然没有告诉我们你得到什么输出

标签: unix awk


【解决方案1】:

awk 的一种方式:

$ awk 'NR>1{gsub(/\./,"_",$5);gsub(/:/,"_",$6);$5=$5"_"$6;$6=$NF;NF--}{$1=$1}1' OFS="\t" myfile.csv

测试:

$ cat temp
Id  depId   Name    city    Date                    prod
12345   52845   ken LA  8.8.2013 16:06:53   KLS22
25685   28725   Larry   MA  9.3.2013 16:06:58   KLt35
58345   28545   ken LA  6.8.2013 16:06:53   KLS22
75885   98725   Gow CA  5.4.2013 16:06:58   KLt35

$ awk 'NR>1{gsub(/\./,"_",$5);gsub(/:/,"_",$6);$5=$5"_"$6;$6=$NF;NF--}{$1=$1}1' OFS="\t" temp
Id      depId   Name    city    Date    prod
12345   52845   ken     LA      8_8_2013_16_06_53       KLS22
25685   28725   Larry   MA      9_3_2013_16_06_58       KLt35
58345   28545   ken     LA      6_8_2013_16_06_53       KLS22
75885   98725   Gow     CA      5_4_2013_16_06_58       KLt35

【讨论】:

    【解决方案2】:

    一种更简单的方法,它不检查看起来像日期的字符串是否真的在正确的列中:

    $ perl -pe 's/\t(\d)\.(\d)\.(\d\d\d\d) /sprintf("\t%04d-%02d-%02d ", $3, $2, $1) /e' t.csv
    12345   52845   ken     LA      2013-08-08 16:06:53     KLS22
    25685   28725   Larry   MA      2013-03-09 16:06:58     KLt35
    

    【讨论】:

      猜你喜欢
      • 2018-05-22
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多