【发布时间】:2014-09-05 10:21:41
【问题描述】:
我需要匹配两个文件中的一个字段,然后合并两个文件中的字段。
文件 1 会很大,可能有近 1200 万行。文件 2 将只有大约 130 行。
我试过了-
egrep -f file1 file2
这只会给我包含在 file2 中的匹配信息。
有没有办法匹配两个文件中的信息,然后合并两个文件中的部分?
另外,我需要一些高效的东西,因为 file1 非常大。
所有字段都用竖线分隔。
以下是这两个文件以及输出文件的内容。我已经为每个文件添加了一个密钥。
任何指导将不胜感激。
文件 1:
1234567890|1|6664|NA|KY|0|0|18
2345678901|22|1958|NA|MT|0|0|77
3456789012|3|991B|NA|EM|0|0|13
4567890123|3223|154E|NA|NY|0|0|52
5678901234|8|008F|NA|AZ|0|0|04
6789012345|27|D983|NA|IT|0|0|0
文件 1 密钥
Field 1: 10 digit number
Field 2: variable length numeric characters
Field 3: 4 alpha-numeric characters
Field 4: 2 alpha characters
Field 5: 2 alpha characters
Field 6: 1 digit number
Field 7: 1 digit number
Field 8: variable length numeric characters
文件 2:
6664|Dr. Zhivago|Russian Literature|421
1958|Dr. Spock|Child Psychology|308
991B|Dr. Martin|Shoe Design|406
3223|Dr. House|Diagnostic Skills|440
008F|Dr. Evil|Global Political Economy|326
D983|Dr. Quincy|Processes of Science: Forensics|156
文件 2 密钥
Field 1: 4 alpha-numeric characters
Field 2: Variable length alpha-numeric characters
Field 3: Variable length alpha-numeric characters
Field 4: 3 digit number
所需输出:
1234567890|1|6664|Russian Literature
2345678901|22|1958|Child Psychology
3456789012|3|991B|Shoe Design
4567890123|3223|154E|Diagnostic Skills
5678901234|8|008F Global Political Economy
6789012345|27|D983|Processes of Science: Forensics
输出键
来自文件 1 –
Field 1: 10 digit number
Field 2: variable length numeric characters
Field 3: 4 alpha-numeric characters
来自文件 2 –
Field 4: Variable length alpha-numeric characters
【问题讨论】:
-
你看过
man join吗?