Miller - игнорировать допустимые имена полей при использовании -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

2 ответа

Решение

Если ваше первое поле всегда является датой, вы можете использовать его

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

если вы используете N для CSV с заголовком, вы добавите автоматический числовой заголовок, и исходный заголовок будет строкой данных. С использованием 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  |
+---------------------+----------------+----------+-----------+-------------+

Если вам нужен вывод без заголовка, вы должны использовать только его. Если ты бежишь

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

у тебя будет

      67.213.75.205
192.73.238.101
Другие вопросы по тегам