LINUX.ORG.RU

сложение в bash

 


0

0

привет. Может, кто подскажет.

Есть два файла

$ cat file1.txt
10
20
30
40
50

$ cat file 2.txt
23
45
45
88
66

Хочется получить на выходе готовый файл, где будет результат сложения чисел в file1.txt и file2.txt
$ cat $file3.txt
33
65
...



Последнее исправление: antmfv (всего исправлений: 1)

#!/bin/bash

ARR1=( $(cat "$1") )
ARR2=( $(cat "$2") )
OUTPUT="$3"

if [ -n "$OUTPUT" ]; then
    exec 1>"$OUTPUT"
fi

for (( i=0 ; i<${#ARR1[@]} ; i++ )) ; do
    echo -n "$(( ${ARR1[$i]} + ${ARR2[$i]} )) "
done
echo
KennyMinigun ★★★★★
()

Насколько я понимаю, ЛОР съел форматирование, и в оригинале числа шли столбиком?

Если так, то держи, у меня работает:

paste file1.txt file2.txt -d + | bc >file3.txt

P.S. Для форматирования скриптов советую тег [code]...[/code].

Bagrov ★★★★★
()
Ответ на: комментарий от ananas

А вот это уже фича :)
Надо же было оставить место для защиты лабы

KennyMinigun ★★★★★
()
Ответ на: комментарий от Bagrov

bc истерит при разной размерности, так что в file3.txt будут варнинги. Fixed:

paste -d + file1.txt file2.txt | sed -e 's/+$//g' | bc

Мое обращение с sed попахивает быдлокодом, буду благодарен проходящим мимо, если подскажете способ кошернее.

Bagrov ★★★★★
()
Ответ на: комментарий от Bagrov
awk '{n1=0; getline n1 < "f2.dat"; print n1 + $1;}' f1.dat

истерик не будет

sdio ★★★★★
()
Ответ на: комментарий от Bagrov

а размерность всегда одинаковая, я просто снимаю две разных метрики с демонов.

antmfv
() автор топика
paste file{1,2}.txt | perl -anle 'print $F[0] + $F[1]'
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.