добавление числовых значений двух столбцов в текстовый файл

У меня есть два текстовых файла, содержание которых следующим образом;

data_1:473428800.0 0 0.000004 1.00 WETZTROPMCIL   #4 columns, several lines
       473429100.0 0 0.000002 1.00 WETZTROPMCIL

data_2:473428800.0 0 2.100000 1.00 DRYTROPMCIL    #4 columns, several lines
       473429100.0 0 2.200000 1.00 DRYTROPMCIL

Я должен добавить каждую строку 3-го столбца одного файла к соответствующей строке 3-го столбца в другом файле и заменить этими суммами на 3-й столбец data_1, в новом файле, как ниже;

merged_data= data_1:473428800.0 0 2.1000004 1.00 WETZTROPMCIL   #4 columns, several lines
                    473429100.0 0 2.2000002 1.00 WETZTROPMCIL
3
задан 9 August 2016 в 18:01

2 ответа

Попытка:

paste data_1 data_2 | awk '{$3=sprintf("%.10g", $3+$8); NF=5; print}'

Примечания:

  • я вижу 5 полей на файл не 4, как указано в OP.

  • paste объединит строки из этих двух файлов.

  • awk будет видеть строки с 10 полями каждый. NF=5 говорит этому сохранять только первые 5, которые являются от data_1.

  • плавание печатается с [s]printf формат %.10f. Этот мог бы или не мог бы быть в порядке. См. man 3 printf.

  • , Если сортировка необходима, она могла бы быть сделана с заменой процесса:

    paste <(sort [args] data_1) <(sort [args] data_2) | awk ...
    
5
ответ дан 1 December 2019 в 13:24

Метод Matei должен гарантировать, что строки находятся в том же порядке. Поэтому следующий путь будет более безопасным.

sort -k 1n data_1 > data_1_sort
sort -k 1n data_2 > data_2_sort
paste data_1_sort data_2_sort| awk '{$3=sprintf("%.10g", $3+$8); NF=5; print}'
2
ответ дан 1 December 2019 в 13:24

Другие вопросы по тегам:

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