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