使用Unix将日期转换为时间戳的问题

使用Unix将日期转换为时间戳的问题,unix,Unix,我有一个日期不同的date.csv文件,无法将其转换为时间戳。 e、 g date.csv具有以下日期:- Mar 24 2014 Apr 1 2014 Aug 25 2014 我正在尝试将上述日期转换为:- 03/24/2014 00:00:00 04/01/2014 00:00:00 08/25/2014 00:00:00 i、 e.采用mm/dd/yyyy 00:00:00格式,从而将输出存储在新文件中,即date1.csv 如何执行此操作?您可以使用GNU日期实用程序执行转换: da

我有一个日期不同的
date.csv
文件,无法将其转换为时间戳。 e、 g

date.csv
具有以下日期:-

Mar 24 2014
Apr 1 2014
Aug 25 2014
我正在尝试将上述日期转换为:-

03/24/2014 00:00:00
04/01/2014 00:00:00
08/25/2014 00:00:00
i、 e.采用mm/dd/yyyy 00:00:00格式,从而将输出存储在新文件中,即
date1.csv


如何执行此操作?

您可以使用GNU日期实用程序执行转换:

date +"%m/%d/%Y %H:M:%S" -d "Mar 24 2014"
03/24/2014 00:00:00
问题并没有指定您可以使用什么工具,但这是Python中的一个基本解决方案,它处理读取CSV文件、转换日期并将其输出到另一个CSV文件:

#!/usr/bin/python

import csv
from datetime import datetime
import sys

DATE_COLUMN = 3 # Or whatever column has the date

input_file = sys.argv[1]
output_file = sys.argv[2]

with open(input_file) as i_f:
    reader = csv.reader(i_f)
    with open(output_file, 'w') as o_f:
        writer = csv.writer(o_f)
        for row in reader:
            date = datetime.strptime(row[DATE_COLUMN], "%h %d %Y")
            row[DATE_COLUMN] = date.strftime("%m/%d/%Y %H:M:%S")
            writer.writerow(row)
用法:

python csv_date_converter.py input_file output_file

您是否尝试过使用
date
?阅读手册页。您的csv是csv还是仅以空格分隔的字段?日期是否显示在文件的一列(例如第3列)中,并且您需要某种方式来转换日期?可使用的工具是否有任何限制?例如,Perl必须读取和写入CSV文件,以及。请注意,可能需要安装Text::CSV和POSIX::strtime。如何将每行的相关字段映射集成到输出中?您的意思是从CSV中的其他字段中提取出来?您可以使用sed/awk,但我可能建议您使用CSV库,如Python标准库。大致上,传递给
date
命令的数据是CSV文件中的一个字段,因此您需要在从该行提取日期字段后,每行输入调用一次
date
命令,然后用替换日期值重写该行。您的建议映射了一个值—这是整个任务的一个重要组成部分,但不是整个任务。我认为问题还不清楚(什么是“使用Unix”?),但我已经概述了一个更完整的解决方案,该解决方案使用Python+标准库模块,应该可以在大多数类似Unix的系统上使用。大纲解决方案+1。如果未向脚本传递任何文件,会发生什么情况?对
sys.argv[1]
sys.argv[2]
的引用是否会导致故障?这是吹毛求疵;可以通过删除概要中文件名周围的方括号,或通过在设置代码中进行额外测试来修复。可以说,对于列表中的行(读卡器):使用
比在写入任何内容之前将整个文件读入内存更有效(我认为)。