Macos 使用awk按列拆分CSV文件

Macos 使用awk按列拆分CSV文件,macos,bash,csv,awk,Macos,Bash,Csv,Awk,我有一个CSV文件,我需要按日期分割。我已经尝试使用下面列出的AWK代码(找到) awk-F“,“'NR>1{print$0>>($1.csv”);close($1.csv”)}”file.csv 我已经尝试在OSX和Debian的终端中运行这个。在这两种情况下都没有错误消息(因此代码似乎运行正常),但也没有输出。没有输出文件,在命令行中也没有响应 我的输入文件包含约6k行数据,如下所示: date,source,count,cost 2013-01-01,by,36,0 2013-01-01,

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

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

我已经尝试在OSX和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文件,其中包含特定日期的所有行。我忽略了什么?

我已经解决了这个问题。按照的逻辑,我用
file
命令检查了我的行结束符,得知该文件有老式的Mac行终止符。我用Text Wrangler打开了我的输入CSV文件,并用Unix样式的行尾再次保存了它。一旦我这样做了,上面列出的
awk
命令就按预期工作了。创建63个按日期划分的新CSV文件花费了约5秒钟。

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

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

当你的方式“没有反应”;您要等待多久?它运行不到一秒钟(提示返回)。我已经观察了文件夹几分钟,看看是否有东西填充了,但什么也没有。我还搜索了我的系统,查看文件是否在其他地方创建,但没有找到luck.resolve。这是我的行尾。在的引导下,我使用
file data.csv
命令检查文件格式。我有Mac风格的行尾,所以我使用文本牧马人来更改格式,现在上面的代码按预期工作。@Lenwood-将其添加为答案并接受,这样问题就结束了。不过,你没什么好说的:——)@FredrikPihl我已经在下面添加了答案。我可以现在将其标记为关闭,还是必须等待2天?发布的命令将生成输出,但可能太长且效率低下。脚本在每行之后关闭输入文件,然后在下一个匹配行上重新打开它。这可能是为了同时打开尽可能少的输出文件,但对于gawk这样的现代AWK,这根本不是问题。您应该能够执行以下操作:
awk-F,'NR>1{print>($1.csv”)}file.csv