通过主键将文件与bash合并

Ste*_*tef 1 unix linux bash shell join

我有两个文件,其中IP-Addresses作为主键.文件二只有一个具有不同信息的子集.我想使用bash将第二列添加到第一个文件中.

文件1:

192.168.1.1;hosta;aabbccddeef0
192.168.1.2;hostb;aabbccddeef1
192.168.1.3;hostc;aabbccddeef2
Run Code Online (Sandbox Code Playgroud)

文件2:

192.168.1.2;differentHostname;
Run Code Online (Sandbox Code Playgroud)

我使用addr的方法cat file2 | cut -d\; -f1; do grep -w $addr file1 ...不起作用,因为我无法从file2访问主机名.

有任何想法吗?

Chr*_*our 8

这是做什么的join:

$ join -a1 -t';' <(sort file1) <(sort file2)    
192.168.1.1;hosta;aabbccddeef0
192.168.1.2;hostb,aabbccddeef1;differentHostname;
192.168.1.3;hostc,aabbccddeef2
Run Code Online (Sandbox Code Playgroud)

注意:join要求按排序顺序排列文件.

您可以使用以下-o选项指定输出顺序:

$ join -a1 -t';' -o 1.1 1.2 2.2 1.3 <(sort file1) <(sort file2)
192.168.1.1;hosta;;aabbccddeef0
192.168.1.2;hostb;differentHostname;aabbccddeef1
192.168.1.3;hostc;;aabbccddeef2
Run Code Online (Sandbox Code Playgroud)