我正在尝试加入三个文件。我大致知道如何做到这一点。我需要加入2,然后加入第一个到第三个。我的问题是我很确定我需要使用-j和-o,但我不确定如何使用它们。这些是我需要加入的三个文件,有人可以帮助我吗?
LN.txt
Jones:John
Kelly:Mary
Adams:Betty
Reich:Richard
PH.txt
Jones:905-555-1212
Kelly:416-555-2424
Adams:416-555-5757
Reich:905-555-8989
AD.txt
Jones:Toronto
Kelly:Calgary
Adams:Calgary
Reich:Toronto
显然我只需要使用他们的姓氏一次。
答案 0 :(得分:4)
试试这个,您可以根据需要更改文件的顺序:
join -t':' LN.txt PH.txt | join -t':' - AD.txt > outputFile.txt
正如@Jonathan Leffler所建议的,在bash中添加以下内容以处理未分类的文件:
join -t':' <(sort LN.txt) <(sort PH.txt) | join -t':' - <(sort AD.txt)
答案 1 :(得分:1)
Amit使用join
提供了一个很好的解决方案。这是一个参考,您可以使用awk
作为您选择的工具来实现相同的目标。
$ awk -F: '{
names[$1] = ((names[$1]) ? names[$1] : "")FS $2
}
END {
for(n in names)
print n names[n]
}' LN.txt PH.txt AD.txt
Jones:John:905-555-1212:Toronto
Kelly:Mary:416-555-2424:Calgary
Adams:Betty:416-555-5757:Calgary
Reich:Richard:905-555-8989:Toronto