So multiplizieren Sie Zahlen aus zwei verschiedenen Dateien

So multiplizieren Sie Zahlen aus zwei verschiedenen Dateien

Ich habe zwei Dateien ...

Erste Datei (Eingabe 1):

1: 6.1703
44 14.7262
46 18.3255

2: 6.1932
44 52.9379
46 4.30653

3: 6.5664
45 2.82839
46 3.1275

4: 8.0923
44 14.1076

Zweite Datei (Eingabe 2):

43          5e-05           4e-05
44          1e-05           2e-05
45          0.00083         1.00083
46          4e-05           7e-05
47          0.00021         6.00021

... und ich möchte die Elemente der ersten Datei mit den beiden Elementen der zweiten Datei multiplizieren, wobei ich die Zahl in der ersten Spalte (beide Dateien) berücksichtige. Die Ausgabe sollte folgendermaßen aussehen:

1: 6.1703
44 14.7262*1e-05   14.7262*2e-05    
46 18.3255*4e-05   18.3255*7e-05

2: 6.1932
44 52.9379*1e-05   52.9379*2e-05
46 4.30653*4e-05   4.30653*7e-05

3: 6.5664
45 2.82839*0.00083 2.82839*1.00083
46 3.1275*4e-05    3.1275*7e-05

4: 8.0923
44 14.1076**1e-05  14.1076**2e-05

Antwort1

Schlürfe die Spalten 2 und 3 aus file2in Arrays aund bsortiere sie nach Spalte 1. Durchlaufe und drucke aus, file1wobei du die Array-Elemente aus aund bals Multiplikatoren und die Werte aus Spalte 2 als Multiplikanden verwendest.

awk 'NR == FNR{a[$1]=$2; b[$1]=$3; next}
     /:/ || !NF{print; next}
     {print $1, $2*a[$1], $2*b[$1]}' file2 file1

1: 6.1703
44 0.000147262 0.000294524
46 0.00073302 0.00128279

2: 6.1932
44 0.000529379 0.00105876
46 0.000172261 0.000301457

3: 6.5664
45 0.00234756 2.83074
46 0.0001251 0.000218925

4: 8.0923
44 0.000141076 0.000282152

verwandte Informationen