2015-10-05 2 views
-1

У меня есть аналогичная проблема, как описано здесь Awk: extract different columns from many different files, но в моем случае у меня есть много файлов в качестве входных данных (может быть 40, может быть 500), и каждый из них следует за латексным форматированием, напримерсуммы столбцов из разных файлов с делиметром

#description & value1 & value2 
    cut1 & XXX & YYY & ZZZ 
    cut2>B & QQQ & TTT & GGG 

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

cut1 & SUM_XXX & SUM_YYY & SUM_ZZZ 
cu2>B & SUM_QQQ & SUM_TTT & SUM_GGG 

Кроме того, значения могут быть в научном format .. Я хотел бы сделать это либо в bash, либо в python. Заранее спасибо!

+0

Вы можете найти питона [ 'csv' модуль] (https://docs.python.org/3.5/library/csv.html) полезно. – lvc

+0

Вам нужно 1) прочитать файл; 2) разделите строку (строку) с помощью символа '&'; 3) суммируйте значения. Вы можете либо использовать модуль csv в python, либо просто сделать это самостоятельно, используя встроенные модули. В любом случае, я думаю, вы будете меньше бороться с питоном, поэтому попробуйте, дайте нам знать, как это происходит. – rll

+0

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

ответ

0

awk на помощь!

Если у вас есть только три столбца агрегировать это будет делать

$ awk 'BEGIN{FS=OFS="&"} 
      {k=$1;a[k]+=$2;b[k]+=$3;c[k]+=$4} 
     END{for(i in a) print i,a[i],b[i],c[i]}' files* 
Смежные вопросы