csvcut:错误:无法识别的参数:文件名 .csv

csvcut: error: unrecognized arguments: filename.csv

提问人:AK91 提问时间:7/22/2020 最后编辑:InianAK91 更新时间:7/22/2020 访问量:594

问:

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

外壳 csvkit

评论


答:

1赞 Inian 7/22/2020 #1

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

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