Рассчитать разницу чисел в двух файлах - PullRequest
2 голосов
/ 08 марта 2010

Скажем, у меня есть два файла, в которых по одной строке в строке

File 1      file 2
0.12        0.11     
0.121       0.454 
....        .... 

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

 0.0099
-0.333
 ......

Вы можете использовать bash / awk / sed

Ответы [ 5 ]

10 голосов
/ 08 марта 2010

Ниже показано, как получить файл1 - файл2

$ cat file1
0.12
0.43
-0.333

$ cat file2
-0.1
-0.2
0.2

$ paste file1 file2 | awk '{print $1 - $2}'
0.22
0.63
-0.533
5 голосов
/ 08 марта 2010

AWK

awk '{getline t<"file1"; print $0-t}' file2  #file2-file1

Объяснение: getline t <"file1" получает строку из file1 и помещает ее значение в переменную t. $0 - это текущая запись file2, которую обрабатывает awk. остальное - просто вычитание и вывод результата.

Bash

exec 4<"file1"
while read -r line
do
    read -r s <&4
    echo "${line}-${s}" | bc
done <"file2"
exec >&4-
0 голосов
/ 08 марта 2010
paste -d - num1 num2 | bc

Edit:

Эта версия правильно обрабатывает отрицательные числа:

yes '-' | head -n $(wc -l < num1) | paste -d ' ' num1 - num2 | bc
0 голосов
/ 08 марта 2010

Bash:

paste file1 file2 | while read a b ; do 
  echo "$a - $b" | bc
done
0 голосов
/ 08 марта 2010
# cat f1
0.12
0.121
# cat f2
0.11     
0.454

# pr -m -t -s\  f1 f2 | gawk '{print $1-$2}'
0.01
-0.333
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...