Учитывая, что SCP вызывал проблемы, мне пришлось использовать DROPBOX API, чтобы загрузить файл в DROPBOX с компьютера A и загрузить его с помощью того же API на компьютер B.
Это легко сделать в Awk:
$ awk 'NR==FNR {a[$1] = FNR==1 ? $2 : sprintf("%.2f",$2); next} {print $0,a[$1]}' File2 File1
hc Value mean
cluster0 0.1 0.35
cluster0 0.2 0.35
cluster0 0.3 0.35
cluster1 0.3 0.40
cluster1 0.5 0.40
cluster0 0.8 0.35
cluster2 0.9 0.90
cluster2 0.9 0.90
cluster0 0.0 0.35
Шаги:
для строк в первом именованном файле(NR==FNR
)создайте ассоциативный массив (или хэш ), проиндексированный значениями первого столбца и содержащий второй столбец (означает )значения. Если вам не нужно, чтобы средние значения отображались в формате с плавающей запятой -, вы можете упростить этот шаг до NR==FNR {a[$1] = $2}
, который обрабатывает все значения (, включая заголовок ), как строки.
в противном случае вывести строку, за которой следует значение в массиве, индекс которого соответствует первому столбцу
Попытался использовать приведенный ниже скрипт, и он тоже работал нормально
команда
for i in `cat file2| awk '{print $1}'`; do p=`grep "$i" file2| awk '{print $2}'`; awk -v i="$i" -v p="$p" '$1 == i {$3=p;print $0}' file1; done|sed '1i hc Value mean'
выход
hc Value mean
cluster0 0.1 0.35
cluster0 0.2 0.35
cluster0 0.3 0.35
cluster1 0.3 0.40
cluster1 0.5 0.40
cluster0 0.8 0.35
cluster2 0.9 0.90
cluster2 0.9 0.90
cluster0 0.0 0.35