使用awk按列拆分CSV文件

时间:2013-03-15 19:24:50

标签: macos bash csv awk

我有一个CSV文件,我需要按日期拆分。我尝试使用下面列出的AWK代码(找到elsewhere)。

awk -F"," 'NR>1 {print $0 >> ($1 ".csv"); close($1 ".csv")}' file.csv

我尝试在OS X和Debian的终端内运行它。在这两种情况下都没有错误消息(所以代码似乎运行正常),但也没有输出。没有输出文件,在命令行没有响应。

我的输入文件有大约6k行数据,如下所示:

date,source,count,cost
2013-01-01,by,36,0
2013-01-01,by,42,1.37
2013-01-02,by,7,0.12
2013-01-03,by,11,4.62

我想要的是创建一个包含特定日期所有行的新CSV文件。我在俯瞰什么?

2 个答案:

答案 0 :(得分:4)

我已经解决了这个问题。遵循this thread的逻辑,我使用file命令检查了行结尾,并了解到该文件具有旧式Mac行终止符。我用Text Wrangler打开输入的CSV文件,并用Unix风格的行结尾再次保存。完成后,上面列出的awk命令按预期工作。创建63个按日期分列的新CSV文件花了大约5秒钟。

答案 1 :(得分:0)

用于使用“;”在日志文件中检索信息。我使用的分隔符:

grep "END SESSION" filename.log | cut -d";" -f2

其中

  -d, --delimiter=DELIM   use DELIM instead of TAB for field delimiter
  -f, --fields=LIST       select only these fields;  also print any line
                          that contains no delimiter character, unless
                          the -s option is specified