awk: вычесть первую строку от всех линий и умножить на фактор

Я никогда не знал о команде lscpu.

В справочной странице указано, что он основан только на первом процессоре. «Ставка» может «измениться».

кажется, что lscpu находится в процессе изменения - более новые имеют параметр -V (--version), в моей системе ubuntu 15.04 он говорит:

leisner@t7400:/tmp$ lscpu --version
lscpu from util-linux 2.25.2
Model name:            Intel(R) Xeon(R) CPU           E5430  @ 2.66GHz
Stepping:              6
CPU MHz:               2667.000
CPU max MHz:           2667.0000
CPU min MHz:           2000.0000

В другой системе просто говорит:

CPU MHz:               800.000

Но в cpufreq-info там написано:

current CPU frequency is 800 MHz.
cpufreq stats: 2.40 GHz:0.02%, 2.40 GHz:0.00%, 2.30 GHz:0.00%, 2.20 GHz:0.00%, 2.10 GHz:0.00%, 1.90 GHz:0.00%, 1.80 GHz:0.00%, 1.70 GHz:0.04%, 1.60 GHz:0.00%, 1.50 GHz:0.00%, 1.40 GHz:0.00%, 1.30 GHz:0.01%, 1.10 GHz:0.00%, 1000 MHz:0.00%, 900 MHz:0.01%, 800 MHz:99.91%  (5851)

(это 8-ядерный i7).

0
19.09.2018, 18:27
2 ответа

Как насчет

awk 'NR == 1 {DELTA = $0} {$0 = ($0 - DELTA) * FAC; print}' FAC=627.509 file
2
28.01.2020, 02:42

Кажется, это работает:

$ awk -v c=627.509 'NR==1 { b=$1 } { printf( "%0.6f\n", ( $1-b ) * c ) }' file.dat
0.000000
-27.586551
-40.559672
-38.839042
-41.630830
-34.159707
-50.683902
-49.767111
-42.710773
-43.985243
-49.809154
-53.644489
-46.232981
-49.268242
0
28.01.2020, 02:42

Теги

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