Как суммировать числа внутри многих 2D-массивов

Мне нужно суммировать числа, расположенные в файле, подобном этому:

column1 column2 column3 row1 a(1,1) a(1,2) a(1,3) row2 a(2,1) a(2,2) a(2,3) row3 a(3,1) a(3,2) a(3,3) row4 a(4,1) a(4,2) a(4,3) column4 column5 column6 row1 b(1,1) b(1,2) b(1,3) row2 b(2,1) b(2,2) b(2,3) row3 b(3,1) b(3,2) b(3,3) row4 b(4,1) b(4,2) b(4,3) column7 column8 column9 row1 c(1,1) c(1,2) c(1,3) row2 c(2,1) c(2,2) c(2,3) row3 c(3,1) c(3,2) c(3,3) row4 c(4,1) c(4,2) c(4,3) 

и для вывода такой вещи:

  column1 a(1,1)+a(2,1) a(3,1)+a(4,1) column2 a(1,2)+a(2,2) a(3,2)+a(4,2) column3 a(1,3)+a(2,3) a(3,3)+a(4,3) column4 b(1,1)+b(2,1) b(3,1)+b(4,1) column5 b(1,2)+b(2,2) b(3,2)+b(4,2) column6 b(1,3)+b(2,3) b(3,3)+b(4,3) column7 c(1,1)+c(2,1) c(3,1)+c(4,1) column8 c(1,2)+c(2,2) c(3,2)+c(4,2) column9 c(1,3)+c(2,3) c(3,3)+c(4,3) 

У меня есть один способ сделать это в bash, но он работает только с двумя 2D-массивами и не работает с этим примером, который содержит три 2D-массива. Я хочу что-то, что может быть полезно для многих 2D-массивов. Здесь сценарий, который работает только для двух 2D-массивов.

  sed 's/row[1-6]//;/^$/d' test | pr -2t | awk 'NR==1{$1=$1; print; next} !(NR%2){split($0,a); next} {for(i=1;i<=NF;i++) $i+=a[i]}1' | tr ' ' '\n' | pr -3t 

Примечание. Чтобы вычислить суммы, замените индексы ячеек на следующие значения:

  $ tr -d 'ab(,)' < file > filenums 

One Solution collect form web for “Как суммировать числа внутри многих 2D-массивов”

Я предполагаю, что трюк состоит в том, чтобы использовать -3t для первого pr , а затем добавить -w200 (или так), чтобы избежать обрезания последнего столбца.

В более общем случае, если у вас есть N матриц, вы должны использовать pr -${N}t -w $((N*W)) качестве первой команды pr , где W – ширина символа одной матрицы (скажем, примерно 10 для каждого столбца плюс бит).

Все остальное должно быть хорошо.

  • Как сравнить значения float в сценарии оболочки?
  • Как вывести выход из кошки
  • Удаление шаблонов из строки с помощью bash
  • Отображает и их относительное положение в сценарии оболочки
  • Как найти слово и удалить его со следующей строкой
  • Как заставить команду diff игнорировать некоторые строки второго файла (bash)?
  • Как ожидать от PID от вызванного процесса?
  • Каков наиболее эффективный способ регистрации ошибок сценария оболочки crontab с ошибкой?
  • Выберите конкретный диапазон полей текстового файла
  • Сценарий Stop bash с любым ключом
  • Как перемещать и воссоздавать папку одновременно?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.