使用Linux命令合并和比较文件

时间:2016-08-12 17:08:32

标签: linux bash

我有一个关于合并2个数据文件的问题。第一个文件包含每个服务器名称的IP地址。第二个包含数据项和关联的IP地址。

对于输出,我想要输入第二个文件,但是使用映射的服务器名称,在第一个文件中查找。

File_1:

10.1.1.1 server_1
10.1.1.2 server_2
10.1.1.3 server_3

File_2:

2  10.1.1.3
4  10.1.1.1

我需要找出一个获取输出的命令:

OUTPUT_FILE:

2 10.1.1.3  server_3
4 10.1.1.1  server_1

2 个答案:

答案 0 :(得分:1)

您可以使用awk:

awk 'FNR==NR{a[$1]=$2; next} $2 in a{print $0, a[$2]}' file1 file2

2  10.1.1.3 server_3
4  10.1.1.1 server_1

答案 1 :(得分:1)

join -1 1 -2 2 -o 2.1,0,1.2 <(sort -k1 File_1) <(sort -k2 File_2)

输出:

4 10.1.1.1 server_1
2 10.1.1.3 server_3

加入文件1的第一个字段,文件2的第二个字段,输出文件2的第一个字段,加入字段和文件1的第二个字段;将sort -k1 File_1的输出和sort -k2 File_2的输出作为输入文件。

如果您需要按第一列中的数值排序的输出,请输入sort -k1n(或sort -n)。