我有一个 CSV 文件,想丢弃几列。假设这是一个示例文件:
column a, column b, column c
value a, value b, value c
value a, "quoted, b", value c
现在假设我们要丢弃 b 列,那么结果就是:
column a, column c
value a, value c
value a, value c
如果没有引用字符串“quotated, b”,我可以用以下方法执行此操作cut
:
cut -d ',' -f 1,3
但是有这个引号字符串。我可以用 libreoffice 加载文件,但除了不太酷和自动化之外,我的文件有几百 MB,有些甚至超过了 LibreOffice Calc 的最大行数。
(旁注:我的实际文件有 30 列,我想选择其中的 5-10 列。所以这不像“丢弃最后一列”)
答案1
如果你可以安装 python 和 easy_install,那么你也可以安装工具: https://csvkit.readthedocs.io
现在,您可以运行如下简单命令来仅选择第 1 列和第 3 列:
csvcut -c 1,3 original_file.csv > new_file.csv
或者,另一个例子,删除第二列:
csvcut -C 2 original_file.csv > new_file.csv
..
笔记:
只是一句警告,您的 CSV 看起来无效。除非您想在数据中出现空格字符,否则逗号/分隔符后不得有空格。空格字符只是数据的一部分,可能会扰乱引用的文本。
这些数据是如何生成的?是否可以生成不带额外空格的数据?例如column a,column b,column c