2

我有两个文件,一个包含服务器名称和 IP,另一个包含服务器名称和机器名称,例如。这些文件没有真正的顺序。我尝试过使用 Sort、awk 和 sed 的变体。但是第一个文件维护得不是很好,并且包含虚假数据,这些数据抵消了我计划这样做的方式。

我试图基本上只为两行中包含的服务器在两个文件之间进行模式匹配,并将两个文件中的行中的数据打印在第三文件的一行上。

文件 1:

Server1 10.10.10.1
Server2 10.10.10.2
....
Server154 10.10.30.8
Server155 10.10.30.9

文件 2:

Server1 site site1
Server2 site site2
....
Server154 site site154
Server155 site site155

输出:

Server1 10.10.10.1 site site1
Server2 10.10.10.2 site site2
...
Server154 10.10.30.8 site site154
Server155 10.10.30.9 site site155
4

2 回答 2

3

这应该可以解决问题:

$ awk 'FNR==NR{a[$1]=$0;next}($1 in a){print a[$1],$2,$3}' file1 file2
Server1 10.10.10.1 site site1
Server2 10.10.10.2 site site2
Server154 10.10.30.8 site site154
Server155 10.10.30.9 site site155
于 2013-04-25T12:22:21.130 回答
-1

可以通过在 BEGIN 中用第一个文件填充数组,然后将第二个文件与该数组匹配来解决。

awk -v f1="file1.txt" 'BEGIN { while (getline < f1) { keys[$1]=$2 } ; close(f1) }
   keys[$1] { print }' file2.txt
于 2013-04-25T12:28:40.683 回答