当前位置: 首页 > 知识库问答 >
问题:

想要更改csv文件日期列格式

常献
2023-03-14

我是批处理/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由Tab分隔。我想将日期列更改为以下格式:

DD_MM_YYY_hh_mm_ss
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

共有1个答案

丌官坚秉
2023-03-14

使用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
 类似资料:
  • 我需要过滤一个csv文件,其中第25列的日期格式为“yyyy-mm-dd hh:mm:ss”,以便只显示包含今天日期的整行,并将它们放在一个单独的文件中(希望这是清楚的)。 现在,我回到以下几点: Today=日期'+%y-%m-%d' awk-f“;”“{if($25==”$Today“)print}”input.csv>Today.csv“ 还有,我需要保持日期列的格式原样(YYYY-MM-D

  • 问题内容: 我有一个带有大量行的表。一列包含格式为’%m /%d /%Y’的日期,我想将它们全部更改为格式’%Y-%m-%d’ 通常:更新表设置mydate =‘6’ 我猜是行不通的,因为日期总是在变化。在这种情况下,我该怎么办? 问题答案: 如果日期字符串中的字段正确地用零填充,则可以将它们提取为子字符串:

  • 问题内容: 我试图改变对象的格式,我试图以这种方式做到这一点: 但这对对象没有任何影响,仍然是旧格式,无法真正理解为什么会这样。 问题答案: 请尝试将两个概念区分开:您的数据和向用户呈现的数据(或用于其他目的的格式设置,例如包含在JSON中)。的保持值7可以表示为(格式化成)7,07,007或7,同时仍保持刚好相同的值而没有任何格式化信息- 外的格式化谎言。同样,a 具有一个时间点,它可以表示为(

  • 我有Date对象的格式 我是怎么做到的?。 我试着用这个代码 当我试着做一个测试时,我会得到这样的结果: 我的问题是在sql将java.util.date更改为java.sql.date时出现的 我解决了这个问题,所以: 和测试:

  • 但这对对象没有任何影响,它还是用旧格式的,不能真正理解它为什么会那样。