【问题标题】:csvcut: error: unrecognized arguments: filename.csvcsvcut:错误:无法识别的参数:filename.csv
【发布时间】:2020-07-22 06:44:29
【问题描述】:

尝试重新排序 csv 中的列。

这有效(调用单个列名):

$ csvcut -c "Node ID" amazon_categories_nodes.csv

这有效(调用多个列索引):

$ csvcut -c 4,1,3,5 amazon_categories_nodes.csv

但这不起作用(调用多个列名):

$ csvcut -c "Node ID", "Node Path" amazon_categories_nodes.csv
usage: csvcut [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
              [-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-S] [-H]
              [-K SKIP_LINES] [-v] [-l] [--zero] [-V] [-n] [-c COLUMNS]
              [-C NOT_COLUMNS] [-x]
              [FILE]
csvcut: error: unrecognized arguments: amazon_categories_nodes.csv

尝试了不同的列名组合,也尝试了 3 个或更多列名,但仍然收到上述错误消息,不知道为什么?我希望输出显示相同的 csv,但按照我在 -c 之后指定的方式排序

【问题讨论】:

    标签: shell csvkit


    【解决方案1】:

    csvcut-c 标志接受逗号分隔的列名或要提取的索引范围。您提供了正确的列名,但在 ,作为

    csvcut -c "Node ID", "Node Path" amazon_categories_nodes.csv
    #                  ^^^ (incorrect)
    

    由于 shell 在将命令行参数传递给适当的程序之前对其进行处理,因此它将参数值解释为 -c"Node ID",,这是不正确的,因为逗号分隔值的未终止序列。此外,它最终会留下 "Node Path" 值而没有任何 csvcut 无法理解的参数标志。

    正确的解决方案是不要在两者之间留任何空间

    csvcut -c "Node ID","Node Path" amazon_categories_nodes.csv
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2021-01-14
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      相关资源
      最近更新 更多