[英]Change a date format in .csv file in each row
我有这样的csv文件:
text;text;text;Date
text;text;text;Date
text;text;text;Date
日期格式如下:
Mon 14 Nov 2016 13:07:30
我想在每一行中更改此格式(时间戳) 14-11-2016 23:36:33
使用awk和date
:
$ awk -v OFS=\; -F\; -v qt="'" ' {
str="date -d" qt $4 qt " " qt "+%Y-%m-%d %H:%M:%S" qt;
str | getline d;
print $1,$2,$3,d
}' file
text;text;text;2016-11-14 13:07:30
它需要用分隔的第四个字段( $4
) ;
( -F\\;
)用作系统date
命令的参数,将其输出读取到变量d
并打印出第三个字段d
。
如果您的系统支持流程替换,则可以执行以下操作:
paste -d\; <(cut -d\; -f1-3 date.csv ) <(cut -d\; -f4 date.csv | date -f - '+%Y-%m-%d %H:%M:%S')
我为您快速整理了一些有关如何在ruby中清理CSV数据的文章
简而言之,给定输入后,您可以使用ruby清理和转换数据,如下所示:
require 'date'
newFile = File.new("new.csv", "w+")
oldFile = File.read("original.csv")
oldFile.lines.each do |line|
lineArray = line.split(';')
formattedDate = DateTime.parse(lineArray[3]).strftime('%d-%m-%Y %H:%M:%S')
lineArray[3] = formattedDate
newFile.puts "#{lineArray.join(';')}\n"
end
newFile.close
您需要做的就是将此脚本保存在目录中作为parser.rb
,确保将原始csv保存为original.csv
(或相应地更新脚本),然后在终端中运行ruby parser.rb
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.