Как вычесть постоянное число из столбца

Существует ли способ вычесть самое маленькое значение из всех значений столбца? Я должен вычесть первое число в 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
20
задан SmokeDetector 13 December 2017 в 02:10
поделиться

3 ответа

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

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

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

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

       print ($1 - shift) " " $2
}' file 
24
ответ дан 30 November 2019 в 00:04
поделиться

сценарий оболочки 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-
1
ответ дан 30 November 2019 в 00:04
поделиться

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

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

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

awk 'NR == 1 {origin = $1} {$1 = $1 - origin; print}' file
12
ответ дан 30 November 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: