我有一个csv文件多列。第一列的时间戳记如下:
1529500027127
1529500027227
1529500027327
1529500027428
1529500027528
1529500027628
1529500027728
我知道您可以针对特定的时间戳执行以下操作:
date -d @1529500027528
但是,如何选择列的所有值并执行此操作?我尝试了下一个命令:
date -d "$(awk -F , -v OFS=, '$1/=1000')" file.csv
我试图了解date命令如何与其他命令一起使用。
由于未提供预期输出的样本,因此只能使用给定的第一列值(在GNU中编写和测试)进行测试awk
。你可以使用strftime
的功能awk
,也因为OP HS提到INPUT_FILE是一个CSV文件,以便提FS
,并OFS
为,
在这里。
awk 'BEGIN{FS=OFS=","} {$1=strftime("%Y/%m/%d %H:%M:%S",$1/1000)}1' Input_file
从man awk
为strftime
:
strftime([[format [,timestamp [,utc-flag]]])根据规范以格式设置时间戳。如果utc-flag存在且非零或非空,则结果以UTC表示,否则结果以本地时间表示。时间戳记应与systime()返回的格式相同。如果缺少时间戳,则使用当天的当前时间。如果缺少格式,则使用等同于date(1)输出的默认格式。默认格式在PROCINFO [“ strftime”]中可用。有关保证可用的格式转换,请参见ISO C中的strftime()函数的规范。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句