Добавить столбец со значениями, совпадающими Идентификаторы другого столбца

Учитывая, что SCP вызывал проблемы, мне пришлось использовать DROPBOX API, чтобы загрузить файл в DROPBOX с компьютера A и загрузить его с помощью того же API на компьютер B.

0
29.05.2019, 00:45
2 ответа

Это легко сделать в 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}, который обрабатывает все значения (, включая заголовок ), как строки.

  • в противном случае вывести строку, за которой следует значение в массиве, индекс которого соответствует первому столбцу

1
28.04.2021, 23:33

Попытался использовать приведенный ниже скрипт, и он тоже работал нормально

команда

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
-1
28.04.2021, 23:33

Теги

Похожие вопросы