OS X 10.9.5,Terminal ver。 2.4awk命令似乎是转置
我有一个.csv文件,大约有100,000行,大约200列。我想过滤列并创建一个新的.csv文件与指定的列。
我一直在阅读一些awk教程,但似乎无法让最基本的命令正常工作。例如,要打印整个第一列,我试过这个:
awk '{print $1}' oldfile.csv
但我只获得第一行的第一个值。
当我试试这个:
awk -F"," '{print $1}' file.csv
我得到整个第一行。
如何获取列而不是行?
编辑:
经过这些谁回答的意见,我做了以下内容:
file file.csv
我回来data
我想:
tr -d '\r' <file.csv> unixfile.csv
然后当我运行awk命令时得到了和以前一样的结果。
所以我创建了一个小awktest.csv
文件我的OS X的机器上:
col1 col2 col3 col4
1 2 3 4
1 2 3 4
1 2 3 4
尝试:
print -F"," '{print $1}' awktest.csv
和回来:
col1
尝试:
print '{print $1}' awktest.csv
和回来:
1,2,3,4l2,Col3,Col4
任何建议?
显示输入文件的样本,和你预期的输出,在这一问题。 – quantdev 2014-12-06 17:50:28
由于您在OS X上,请确保您的文件具有unix样式行结尾(0x0a)而不是Mac(0x0d)。使用Mac行结束符,awk将整个文件视为一条大线。您可以运行命令'file oldfile.csv'来检查。如果它显示“ASCII文本,带有CR行结束符”,则该文件需要转换为unix。 – jas 2014-12-06 18:09:13
您的输入文件是在Windows上创建的,因此具有追踪控制-Ms。用dos2unix或类似工具删除它们,然后运行你的awk命令。 – 2014-12-06 18:14:34