【发布时间】:2013-10-04 05:13:35
【问题描述】:
我有 2 个需要根据给定模式(在本例中为电子邮件地址)合并的文件。
如果可能的话,我想用 grep/sed 来做这件事。请解释答案,以便我弱小的大脑可以处理它。
新信息:没有字段映射。这些文件来自 2 个不同的数据源,并且行数并不总是相同。这是现实世界:当 Bob 停止更新他的博物馆会员资格时,他将不再列在文件 2 中。这是大型非营利组织会员状态每周报告的一部分。文件 1 会一直增长到年底,文件 2 可能会缩小或增长。
我已将第二个文件设置为始终以逗号分隔的位置,并且第一个字段将始终是电子邮件地址,就像文件 1 中一样。
在文件 1 中有这样一行:
007@some.org,007,/Members/Inactive/Delete,2013-06-07T04:41:56.000Z,Never
在文件2中,有这样一行:
User 007@some.org: Forward To:None Enabled:false Action:KEEP
我希望将文件 2 中的内容添加到文件 1 以创建格式如下的文件 3:
007@some.org,007,/Members/Inactive/Delete,2013-06-07T04:41:56.000Z,Never,Forward to:None,Enabled:false,Action:KEEP
3 个新列应始终添加到行尾。
【问题讨论】:
-
你想要做的事情可以通过join轻松处理。只需输入“man join”并阅读手册。确保文件已排序。
-
file2 的字段分隔符是什么?
-
@Codism file2 需要使用一些相当复杂的 RE 搜索/替换逻辑将其文本转换为逗号分隔的字段。这不是
join可以或应该处理的任何事情。 -
您已经得到了不关心文件中有多少行的答案,并且依赖于 file2 没有像您最初发布的那样以逗号分隔和格式化,那么为什么现在要更改输入格式?
-
这个线程中最聪明的人是@glennjackman,他只问了基本问题并等待回复,而我们其他人则四处奔波做出假设、编写代码和辩论可能性。该死!