【发布时间】:2018-10-30 17:38:28
【问题描述】:
我有一个包含数百列和 80 行的 csv 文件。我需要从文件中删除前 13 列。 我试过使用:
cut -d, -f1-13 --complement input.csv > output.csv
但问题是第一列中的一个包含带引号的文本,包括逗号,并且 cut 无法处理这种格式。 示例输入:
标头A、标头B、标头C、标头D、标头E、标头F、标头G、标头H A、“B、B”、C、“D、D、D、D”、E、F、G、H A、“B、B”、C、“D、D、D、D”、E、F、G、H A、“B、B”、C、“D、D、D、D”、E、F、G、H
期望的输出:
标头E、标头F、标头G、标头H E、F、G、H E、F、G、H E、F、G、H
在示例中,我在类似条件下使用较少数量的列。理想情况下,该解决方案应该可以扩展到任意数量的列和行(在我的例子中是 13 列和 80 行)。 我曾尝试使用 awk 寻找解决方案,但它们通常包括打印除要删除的列之外的所有列,由于列的数量庞大,这不是一个实用的解决方案。
【问题讨论】:
-
在 vanilla bash 中没有很好的方法来做到这一点。是否有机会使用包含 csv 解析的语言,例如 python?
-
@Alex Stiff 你怎么知道的?
-
@AlexStiff 我认为提交的两个答案反驳了您的说法。
-