我有一个包含以下记录的UNIX CSV文件 -
Merged_file.csv
USD,2015-09-22 02:34:43.0,XXX
USD,2015-09-22 03:31:43.0,XXX
USD,2015-09-22 04:35:43.0,XXX
USD,2015-09-23 03:31:43.0,XXX
USD,2015-09-23 02:34:43.0,XXX
USD,2015-09-23 03:37:43.0,XXX
USD,2015-09-23 04:32:43.0,XXX
我想将此文件拆分为多个文件,例如一个文件应包含仅一个日期的记录。
需要输出 -
File_2015-09-23.csv -
USD,2015-09-23 03:31:43.0,XXX
USD,2015-09-23 02:34:43.0,XXX
USD,2015-09-23 03:37:43.0,XXX
USD,2015-09-23 04:32:43.0,XXX
File_2015-09-22.csv -
USD,2015-09-22 02:34:43.0,XXX
USD,2015-09-22 03:31:43.0,XXX
USD,2015-09-22 04:35:43.0,XXX
我尝试使用下面的命令,但由于第二个字段是时间戳,它为每个时间戳创建单独的文件,我无法弄清楚如何仅将日期作为拆分的基本字符串文件 -
awk -F, '{print > "File_"$2".csv"}' Merged_file.csv
感谢是否有人可以提供帮助。
答案 0 :(得分:5)
你很亲密:
matrix[num_rows][num_columns]
只需将分隔符更改为逗号和空格即可。同时将重定向更改为awk -F"[, ]" '{print >> "File_"$2".csv"}' Merged_file.csv
,将内容附加到文件中。
答案 1 :(得分:1)
Perl救援:
perl -F'[\s,]' -ane '
open my $O, ">>", "File_$F[1].csv" or die $!;
print {$O} $_;
' Merged_file.csv
答案 2 :(得分:1)
如果您不希望将<space>
整体包含为字段分隔符,则可以在字段2上拆分以获取日期部分:
awk -F, '{ split($2, f, " "); print > ("File_" f[1] ".csv")}' Merged_file.csv