我有一组csv文件(大约250),每个文件都有300到500个记录。我需要从每个文件中剪切2或3列并将其存储到另一个文件中。我正在使用Ubuntu OS。有什么方法可以在命令或实用程序中执行它?如何剪切csv的列
回答
如果您知道列分隔符不出现在字段内,则可以使用cut。
$ cat in.csv
foo,bar,baz
qux,quux,quuux
$ cut -d, -f2,3 < in.csv
bar,baz
quux,quuux
您可以使用shell buildin'for'循环所有输入文件。
如果这些字段可能包含分隔符,那么应该找到一个可以解析CSV文件的库。通常,通用脚本语言将在其标准库中包含一个CSV模块。
Ruby: require 'csv'
Python: import csv
Perl: use Text::ParseWords;
如果字段包含逗号或换行符,您可以使用一个辅助程序,我写,让切(和其他UNIX文本处理工具),以正确的数据工作。
https://github.com/dbro/csvquote
该程序发现特殊字符引述领域内,并暂时与非打印,不会混淆的切割程序字符替换它们。然后在切割完成后恢复。
卢茨”解决方案将成为:
csvquote in.csv | cut -d, -f2,3 | csvquote -u
是的,它对我来说非常好:https://stackoverflow.com/questions/17199311/how-to-delete-a-column-columns-of-a-csv-file-which-has-cell-values-with -a串/ 29134579#29134579 – nono 2015-03-18 23:39:58
如果使用ssconvert
获得CSV你可以尝试:
ssconvert -O 'separator="|"' "file.xls" "file.txt"
通知的TXT延伸,而不是CSV,这样一来会使用Gnumeric_stf:stf_assistant出口商代替Gnumeric_stf:stf_csv,它允许您使用选项(-O
参数)。否则,你会得到一个该文件保护程序不采取选项错误。管道角色更不可能,但你可能想要检查之前。
然后可以重命名和做的事情一样:
cat file.csv | cut -d "|" -f3 | sort | uniq -c | sort -rn | head
- 其他选项例如:
-O 'eol=unix separator=; format=preserve charset=UTF-8 locale=en_US transliterate-mode=transliterate quoting-mode=never'
。 - A solution with AWK v4+。
ssconvert
man page。
- 1. 如何剪切CAShapeLayer?
- 2. CSV文件行在最后被剪切
- 3. 修剪CSV列不工作
- 4. 如何在null上“剪切”?
- 5. 如何“剪切”地址 - mod_rewrite
- 6. 如何剪切UIView内容?
- 7. iPhone如何剪切圈内的圆?
- 8. 如何剪切可可内的图像?
- 9. Python csv切断部分列
- 10. 使用剪切转置列的问题
- 11. 如何剪切/剪切形状并揭示其背后的形状?
- 12. 如何通过符号修剪/剪切java中的字符串?
- 13. 剪切变量
- 14. 剪切图像
- 15. 剪切文本
- 16. 如何使用C#剪切线?
- 17. 如何剪切熊猫数据帧
- 18. PHP:如何剪切单词并添加“...”
- 19. 如何在Android中剪切图像?
- 20. 如何更改,修改,剪切和BITMAP
- 21. 如何剪切视频长度(Mp4)?
- 22. 如何剪切日志文件?
- 23. 如何使用剪切命令
- 24. 如何使用分隔符“{##}”剪切?
- 25. 如何分割或剪切YUV文件?
- 26. 如何将图像剪切成网页
- 27. 如何从URL中剪切文件名?
- 28. 如何在JavaScript中剪切录音
- 29. 如何从JS横幅剪切形状?
- 30. 如何判断图像被剪切?
你可以用类似的方式对所有文件进行可伸缩处理: 找到“* .csv”| xargs cut -d,-f2,3> out.csv – pixelbeat 2009-09-08 10:41:24
如果您想摆脱逗号或将其更改为其他名称,则可以使用'cut'的--output-delimiter = STRING'选项。 – 2009-09-08 14:16:19
这个答案的主要问题是'cut'不处理包含分隔符的引用字段。如果您的CSV文件具有这样的数据,则需要使用其他内容。 – 2011-10-05 14:03:39