我们从多个供应商获得数据许可,并发现即使是相同规范的数据也不能一视同仁。例如,我们与两个不同的房地产交易标准(RETS)提供商合作,它们的实现略有不同。我们与西海岸的供应商合作了近20年,一直保持一致,没有遇到任何与数据相关的问题。然而,与位于东南部的新的RETS提供商合作时,偶尔会出现一个单一的邮政编码值包含ZIP+4而不是通用的5位数ZIP的问题。这在我们的长期供应商那里从未出现过问题,而这个变化导致了将数据批量导入到Microsoft SQL Server时出错。我正在探索是否可以通过命令行转换数据,并发现了Miller(BSD2;Linux/Mac/Windows)。Miller类似于awk、sed、cut、join和sort,用于处理以名称索引的数据,如CSV、TSV和表格化JSON。使用Miller,您可以使用命名字段而无需计算位置索引,使用熟悉的格式,如CSV、TSV、JSON、JSON Lines和位置索引。然后,您可以在运行时添加新字段,这些字段是现有字段的函数,删除字段,排序,统计聚合,漂亮打印等。Miller的语法并不太复杂,有一个专门用于标志、动词和函数的ReadTheDocs网站,并提供了一些常见问题和示例。简而言之,我需要:设置-I标志以原地处理文件,设置输入格式:--itsv,设置输出格式:--otsv,显式设置输出行分隔符:--ors'\r\n'(如果不设置,它会将Windows CR/LF转换为Linux LF),使用put命令转换现有列的数据:put'$PostalCode = substr($PostalCode,0