csvcut: error: unrecognized arguments: filename.csv

csvcut: error: unrecognized arguments: filename.csv

正在尝试对 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

之后指定的方式排序

csvcut-c 标志接受以逗号分隔的列名或要提取的索引范围。您提供的列名称正确,但在 space 之后错误地包含了 , 作为

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

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

正确的解决办法是不在

之间留下任何space
csvcut -c "Node ID","Node Path" amazon_categories_nodes.csv