Miller - 使用 -N 时忽略有效的字段名称

Miller - Ignore valid field names when using -N

我正在使用 miller 处理一些 CSV 文件,如下所示:

mlr --mmap --csv --skip-comments -N cut -f 2 my.csv

效果很好,但有些 CSV 文件包含字段名称,有些则不包含,这就是我使用 -N 的原因。在具有字段名称的文件中,它们会打印在输出中。你会认为将 headerless-csv-output 捆绑在 N 标志中他们不会,但他们是。也许这是一个错误?无论如何,如何防止打印字段名称?如果输入需要以某种方式改变并通过管道传输,那很好,但输出正在被独特地处理。

这是我一直在参考的文档:

my.csv

################################################################
#                                                              #
#                                                              #
#                      BIG OL' COMMENT BLOCK                   #
#                                                              #
#                                                              #
################################################################
#
"first_seen_utc","dst_ip","dst_port","c2_status","last_online"
"2021-01-17 07:30:05","67.213.75.205","443","online","2021-06-24"
"2021-01-17 07:44:46","192.73.238.101","443","online","2021-06-24"

预期输出

67.213.75.205
192.73.238.101

当前产量

dst_ip
67.213.75.205
192.73.238.101

如果您将 N 用于具有 header 的 CSV,您将添加一个自动数字 header,而原始 header 将是一个数据行。使用 N 你也会有 --implicit-csv-header

+---------------------+----------------+----------+-----------+-------------+
| 1                   | 2              | 3        | 4         | 5           |
+---------------------+----------------+----------+-----------+-------------+
| first_seen_utc      | dst_ip         | dst_port | c2_status | last_online |
| 2021-01-17 07:30:05 | 67.213.75.205  | 443      | online    | 2021-06-24  |
| 2021-01-17 07:44:46 | 192.73.238.101 | 443      | online    | 2021-06-24  |
+---------------------+----------------+----------+-----------+-------------+

如果您想要 headerless 输出,您必须只使用它。如果你 运行

mlr --csv --skip-comments --headerless-csv-output cut -f dst_ip input.txt

你将拥有

67.213.75.205
192.73.238.101

如果您的第一个字段始终是日期,则可以使用它

mlr --csv --skip-comments -N filter -S '=~"^[0-9]{4}-"' then cut -f 2 input.txt