2010-07-31 5 views
15

Есть ли способ вычесть наименьшее значение из всех значений столбца? Мне нужно вычесть первое число в 1-м столбце из всех остальных чисел в первом столбце.Как вычесть постоянное число из столбца

Я написал этот сценарий, но это не дает правильный результат:

$ awk '{$1 = $1 - 1280449530}' file 
1280449530 452 
1280449531 2434 
1280449531 2681 
1280449531 2946 
1280449531 1626 
1280449532 3217 
1280449532 4764 
1280449532 4501 
1280449532 3372 
1280449533 4129 
1280449533 6937 
1280449533 6423 
1280449533 4818 
1280449534 4850 
1280449534 8980 
1280449534 8078 
1280449534 6788 
1280449535 5587 
1280449535 10879 
1280449535 9920 
1280449535 8146 
1280449536 6324 
1280449536 12860 
1280449536 11612 

ответ

19

То, что вы в основном работает, вы просто не выводит его. Этот вывод будет то, что вы хотите:

awk '{print ($1 - 1280449530) " " $2}' file 

Вы также можете быть немного поумнее и не жёстко величину сдвига:

awk '{ 
     if(NR == 1) { 
      shift = $1 
     } 

     print ($1 - shift) " " $2 
}' file 
8

Вы были на правильном пути:

awk '{$1 = $1 - 1280449530; print}' file 

Вот упрощенная версия второго примера Майкла:

awk 'NR == 1 {origin = $1} {$1 = $1 - origin; print}' file 
1

сценарий оболочки bash

#!/bin/bash 

exec 4<"file" 
read col1 col2<&4 
while read -r n1 n2 <&4 
do 
    echo $((n1-$col1)) 
    # echo "scale=2;$n1 - $col1" | bC# dealing with decimals.. 
done 
exec >&4- 
Смежные вопросы