Что представляет собой команда Миллера для разделения писем на их собственные строки, а также копирования данных из других столбцов?

У меня очень большой файл csv (213265 строк) с множеством столбцов.

В одной из этих колонок у меня есть письма, разделенные запятыми. Урезанная версия файла csv выглядит так:

Я хотел бы использовать Миллера, чтобы разделить эти электронные письма на их собственные строки, но также скопировать ВСЕ другие столбцы в электронной таблице (многие из которых не показаны здесь в этом простом примере).

Продолжая этот пример, я хотел бы закончить примерно так. Но имейте в виду, что в реальной таблице есть много других столбцов до и после столбца электронной почты:

Можно ли это сделать с помощью Miller (или другого подобного инструмента)? Как бы выглядела команда?

1 ответ

Глагол гнездо. Начиная с

      company,address,email
anna,123 fake,"anna@ciao.it,annac@gfail.com,a@box.net"

и работает

      mlr --csv nest --explode --values --across-records --nested-fs "," -f email input.csv

у тебя будет

      +---------+----------+-----------------+
| company | address  | email           |
+---------+----------+-----------------+
| anna    | 123 fake | anna@ciao.it    |
| anna    | 123 fake | annac@gfail.com |
| anna    | 123 fake | a@box.net       |
+---------+----------+-----------------+

Если у вас «плохой» CSV, у вас могут возникнуть проблемы, и вам следует попытаться его очистить. Общая команда очистки может быть такой:

      mlr --csv -N clean-whitespace then remove-empty-columns then skip-trivial-records then cat -n sample.csv | mlr --csv nest --explode --values --across-records --nested-fs "," -f Email >output.csv

Он удаляет пустые строки, пустые столбцы и неправильные пробелы.

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