我有400MB到1GB的大文本文件。
它是一个制表符分隔文件,日期是第二个字段。记录不按日期排序,可以按任何顺序排列。
记录数和期限因文件而异
文本文件中的每条记录都有一个日期字段,格式为14/02/2012
(即dd/mm/yyyy
)。我想按日期拆分文本文件并保存为Month.txt(例如2012Jan.txt
)。
Jan.txt
文件应仅包含1st Jan 2012
到31st Jan 2012
期间的记录。
最好的方法是什么?有人可以推荐一个代码/编程工具来实现这一点。
由于
答案 0 :(得分:0)
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)
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
更改为该文件名)