[英]How to do math operations in a single column in bash and/or using awk?
我有一排這樣的幾行:
20.000
15.000
42.500
42.500
45.000
45.000
50.000
50.000
50.000
50.000
50.000
50.000
50.000
50.000
50.000
我需要以一個文件結尾:
第一個元素是20/2
第二個元素是前一個值+ 15/2
第三個元素是先前值+ 42.5 / 2
直到最后
我的問題是如何執行“循環”。
Perl解救:
perl -lne 'print $s += $_ / 2' input-file > output-file
-l
從輸入中刪除換行符並將其添加到輸出 -n
逐行讀取輸入,對每個輸入執行代碼 $_
是從每一行讀取的值 / 2
除以2 +=
是將其乘車手側添加到其左側的操作員,並將結果存儲在左側,並返回新值。 我將變量$s
命名為“ sum”。 嘗試這個:
awk '{prev += ($0) / 2; printf("%.3f\n", prev);}' a2.txt
輸入:
20.000
15.000
42.500
42.500
45.000
45.000
50.000
50.000
50.000
50.000
50.000
50.000
50.000
50.000
50.000
輸出:
10.000
17.500
38.750
60.000
82.500
105.000
130.000
155.000
180.000
205.000
230.000
255.000
280.000
305.000
330.000
只是,
$ awk '{print v+=$1/2}' file
10
17.5
38.75
60
82.5
105
130
155
180
205
230
255
280
305
330
您可以根據需要設置printf
格式
我猜你需要輸出為一行:
awk '{s+=$1/2; out = out s " ";} END{print out}' file
#=> 10 17.5 38.75 60 82.5 105 130 155 180 205 230 255 280 305 330
最后,我認為沒有多余的空間。
如果您不想要它,可以將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.