2

尝试重新排序 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

4

1 回答 1

1

-c标志csvcut接受逗号分隔的列名或要提取的索引范围。您提供了正确的列名,但在 ,as之后错误地包含了一个空格

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
于 2020-07-22T06:55:50.727 回答