Файл 1:
1 0.3
2 0.1
3 0.4
4 0.8
Файл a:
2 0.7
4 0.2
6 0.5
8 0.9
Файл b:
2 0.4
6 0.6
Цель
Шаг за шагомшаг:
- Найдите общие значения в поле 1 ($ 1) между файлами 1, a и b.В качестве примера решения вышеуказанных файлов:
- Файл 1, Файл a и Файл b имеют общее значение в $ 1 = 2.
- Файл 1 и Файл a также имеют общее значениев $ 1 = 4
- Выходной файл 1 со следующими изменениями:
- Для $ 1 = 2, затем $ 2 = 0,1 + 0,7 + 0,4 = 1,2
- Для $ 1 = 4, затем $ 2 = 0,8 + 0,2 = 1,0
Желаемый вывод в файле 2:
1 0.3
2 1.2
3 0.4
4 1.0
А именно, файл 2 =Файл 1, за исключением строк, где $ 1 в файле 1 соответствует $ 1 в файле a или b, был добавлен вместе в $ 2.
аналогичная проблема
Я уже получил совет по этой проблеме для сопоставления и добавления двух файлов с использованием кода
awk 'FNR==NR{a[$1]=$2;next} {$2=$1 in a?$2+a[$1]:$2} 1' Input_file2 Input_file1 >> output_file
Однако код не может обрабатывать 3 входных файла одновременно.Если я делаю их отдельно (два файла за раз, т.е. Файл 1 + Файл a, затем Файл 1 + Файл b), я в итоге добавляю значение Файла 1 дважды.
Поскольку у меня потенциально есть 3-6 файлов для сравнения, я не могу просто сделать Файл a + Файл b >> Файл c, затем Файл 1 + Файл c >> Файл 2.
Сводка
Я хотел бы сценарий, который может искать совпадения в $ 1 между тремя файлами, а затем печатать $ 2 (Файл 1) + $ 2 (Файл a и / или Файл b) везде, где найдено совпадение в $ 1.Выходными данными является Файл 2, который печатает Файл 1 с новыми суммированными значениями в $ 2, где совпадения в $ 1 произошли.Любая помощь очень ценится!