2

たとえば、サーバー名とIPを含むファイルと、サーバー名とマシン名を含むファイルの2つがあります。ファイルは実際の順序ではありません。Sort、awk、および sed のバリエーションを使用してみました。しかし、最初のファイルはあまりよく維持されておらず、私が計画していた方法を相殺する偽のデータが含まれています。

基本的に、両方の行に含まれるサーバーのみの2つのファイル間でパターン一致を試み、両方のファイルの行からのデータを3番目のファイルの1行に出力しようとしています。

ファイル 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 の最初のファイルを配列に入力し、2 番目のファイルをその配列と照合することで解決できます。

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 に答える