我有一个非常大的 csv 文件(213,265 行),其中包含许多列。
在其中一个专栏中,我有一些用逗号分隔的电子邮件。csv 文件的精简版本如下所示:
我想使用Miller将这些电子邮件分离到它们自己的行中,但也复制电子表格中的所有其他列(在这个简单的示例中,其中许多列未在此处显示)。
继续这个例子,我想以这样的方式结束。但请记住,真正的电子表格在电子邮件列之前和之后还有许多其他列:
这可能与米勒(或其他类似工具)有关吗?命令会是什么样子?
动词是巢。从...开始
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,你可能会遇到一些问题,你应该尝试清理它。一个通用的 clean 命令可能是这个:
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
它会删除空行、空列和错误的空格。