按日期字段拆分大文本文件并另存为月份

时间:2013-06-19 07:50:37

标签: text split

我有400MB到1GB的大文本文件。

它是一个制表符分隔文件,日期是第二个字段。记录不按日期排序,可以按任何顺序排列。

记录数和期限因文件而异

文本文件中的每条记录都有一个日期字段,格式为14/02/2012(即dd/mm/yyyy)。我想按日期拆分文本文件并保存为Month.txt(例如2012Jan.txt)。

Jan.txt文件应仅包含1st Jan 201231st Jan 2012期间的记录。

最好的方法是什么?有人可以推荐一个代码/编程工具来实现这一点。

由于

2 个答案:

答案 0 :(得分:0)

在UNIX shell中:

awk 'NR>1{split($2,date,"/");print>date[3]strftime("%b.txt",(date[2]-1)*31*24*60*60)}' large.txt
Windows CMD shell中的

awk "NR>1{split($2,date,\"/\");print>date[3]strftime(\"%b.txt\",(date[2]-1)*31*24*60*60)}" large.txt
<。>在Windows .BAT文件中:

awk "NR>1{split($2,date,\"/\");print>date[3]strftime(\"%%b.txt\",(date[2]-1)*31*24*60*60)}" large.txt

(假设您的文件名为large.txt

答案 1 :(得分:0)

<。>在Windows .BAT文件中,每个输出文件中都有标题:

awk "NR==1{header=$0};NR>1{split($2,date,\"/\");file=date[3]strftime(\"%%b.txt\",(date[2]-1)*31*24*60*60);if(!wrote[file]++)print header>file;print>file}" %1

(这里将输入文件的名称作为参数传递给.BAT调用;如果它始终是同一个文件,则可以将%1更改为该文件名)