我想逐行添加两个文件?

时间:2016-08-24 15:11:19

标签: bash python-2.7

我正在使用如下所述的files.txt。

File1.txt |s File2.txt:
-----------------------                                        
P4-L5, 107MH62, 10.33.145.166, P4:R1:09 |s 10.33.145.166, 1, 3
P4-L21, 108LH62, 10.33.209.168, P4:R3:10 |s 10.33.209.168, 2, 5
P5-L16, 108MH62, 10.34.61.116, P5:R2:16 |s 10.34.61.116, 5, 8
P4-L13, 109LH62, 10.33.177.168, P4:R2:09 |s 10.33.177.168, 10, 12

我想比较IP地址,然后将file2.txt中的相应数字添加到file1.txt

Output file should be like:
---------------------------
|P4-L5, 107MH62, 10.33.145.166, P4:R1:09, 1, 3|
|P4-L21, 108LH62, 10.33.209.168, P4:R3:10, 2, 5|
|P5-L16, 108MH62, 10.34.61.116, P5:R2:16, 5, 8|
|P4-L13, 109LH62, 10.33.177.168, P4:R2:09, 10, 12|

请为此帮助我使用bash或python命令!!

提前致谢。

1 个答案:

答案 0 :(得分:2)

> join -t ',' -1 3 -2 1 -o 1.1 1.2 1.3 1.4 2.2 2.3 file1 file2
P4-L5,107MH62,10.33.145.166,P4:R1:09,1,3
P4-L21,108LH62,10.33.209.168,P4:R3:10,2,5
P5-L16,108MH62,10.34.61.116,P5:R2:16,5,8
P4-L13,109LH62,10.33.177.168,P4:R2:09,10,12

使用-e选项的不匹配示例:

join -t ',' -1 3 -2 1 -e 'NA' -o 1.1 1.2 1.3 2.2 2.3 -a1 file1 file2
P4-L5,107MH62,10.33.145.166,1,3
P4-L21,108LH62,10.33.209.168,2,5
P5-L16,108MH62,10.34.61.116,5,8
P4-L13,109LH62,10.33.177.168,NA,NA

说明:

  • -t',':使用CHAR作为输入和输出字段分隔符
  • -1 3:使用file1的第3个字段作为连接键
  • -2 1:使用file2的第一个字段作为连接键
  • -o 1.1 1.2 1.3 1.4 2.2 2.3:在构造输出线时服从FORMAT。 (第一个文件中的第一个字段:1.1)
  • -e 'NA':用NA
  • 替换丢失的输入字段

使用命令join --help了解更多详情。