1

2 つのファイルがあります。最後の列を参照のように使用したいことに注意してください。

1) 最初のファイル:

[robert@10-2Fontes]$ head rxid 
0.086297     id 0    udp    767     0
0.091866     id 1    udp    760     1
0.097236     id 2    udp    733     2
0.103616     id 3    udp    869     3
0.110956     id 4    udp    1000    4
0.459247     id 9    udp    754     54

注: このファイルには 64196 行あります。

2) 2 番目のファイル (参照):

[robert@10-2Fontes]$ head pumba.txt 
0.086297 0
0.091866 1
0.097236 2
0.103616 3
0.110956 4
0.118285 5
0.125615 6
0.130077 7
0.459247 54

このファイルはインデックスで、64677 行あります。

3) 3 番目のファイルを希望します。ファイル 2 の対応する番号を検索し、最初のファイルの最後の列に関連する番号を入れます。そんな感じ:

0.086297     id 0    udp    767     0 0.086297
0.091866     id 1    udp    760     1 0.091866
0.097236     id 2    udp    733     2 0.097236
0.103616     id 3    udp    869     3 0.103616
0.110956     id 4    udp    1000    4 0.110956
...
4

2 に答える 2

2

どうですか:

awk 'NR==FNR{a[$2]=$1;next}$6 in a{print $0,a[$6]}' file2 file1 > file3
于 2013-02-03T23:28:43.943 に答える
0

念のため、最初の列を参照として作成することもできます。その場合、参照チェックのために最後の列を用意する必要はありません。私はあなたが持っていると思います

file1:

0.086297     id 0    udp    767     
0.091866     id 1    udp    760     
0.097236     id 2    udp    733     
0.103616     id 3    udp    869     
0.110956     id 4    udp    1000    
0.459247     id 9    udp    754     

およびfile2:

0.086297 0
0.091866 1
0.097236 2
0.103616 3
0.110956 4
0.118285 5
0.125615 6
0.130077 7
0.459247 54

このように最初の列に基づいてそれらを組み合わせることができます

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

  1. .NR==FNR{a[$1]=$0; next;}最初のファイルの場合、最初の列は行全体を格納するためのインデックスとして使用され、次の部分はスキップされます

  2. 2番目のファイルでは、$1最初の列が配列aに存在する場合、前に保存した行を2番目の列と結合します$2

最終出力

0.086297     id 0    udp    767 0
0.091866     id 1    udp    760 1
0.097236     id 2    udp    733 2
0.103616     id 3    udp    869 3
0.110956     id 4    udp    1000 4
0.459247     id 9    udp    754 54
于 2013-02-04T06:00:18.837 に答える