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
标志中他们不会,但他们是。也许这是一个错误?无论如何,如何防止打印字段名称?如果输入需要以某种方式改变并通过管道传输,那很好,但输出正在被独特地处理。
这是我一直在参考的文档:
- https://manpages.ubuntu.com/manpages/focal/man1/mlr.1.html#options
- https://miller.readthedocs.io/en/latest/reference.html
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
我正在使用 miller
处理一些 CSV 文件,如下所示:
mlr --mmap --csv --skip-comments -N cut -f 2 my.csv
效果很好,但有些 CSV 文件包含字段名称,有些则不包含,这就是我使用 -N
的原因。在具有字段名称的文件中,它们会打印在输出中。你会认为将 headerless-csv-output
捆绑在 N
标志中他们不会,但他们是。也许这是一个错误?无论如何,如何防止打印字段名称?如果输入需要以某种方式改变并通过管道传输,那很好,但输出正在被独特地处理。
这是我一直在参考的文档:
- https://manpages.ubuntu.com/manpages/focal/man1/mlr.1.html#options
- https://miller.readthedocs.io/en/latest/reference.html
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