簡體   English   中英

在bash循環中減去浮點數

[英]Subtracting floating point numbers in a loop in bash

我有一個包含500行浮點數的文件。 我想做的是取一行,然后從該行中減去行號較低的每一行。 一個不起作用的腳本示例是:

for i in `seq 0 499`; do
       for ((j=0; j<i; j++)); do
               a=$(awk 'NR == i' i=$i inputfile)
               b=$(awk 'NR == j' j=$j inputfile)
               echo $(awk '{c=a-b};END{print c/NR}' a=$a b=$b)
       done
done > outputfile

我不熟悉如何使用awk,因此不勝感激。 謝謝!

例:

輸入:

1
2
3
4
5

輸出:

1
2 - 1
3 - 1
3 - 2
4 - 1
4 - 2
4 - 3
5 - 1
5 - 2
5 - 3
5 - 4

除了整數以外,其他所有內容都是浮點數,應該對減法進行求值

如果您將其放入a.awk

{
    a[NR] = $1
}
END {
    print a[1]
    for (i = 2; i <= NR; i++) 
        for (j = 1; j < i; j++) 
            print a[i]-a[j]
}

並運行

awk -f a.awk foo.txt

您將獲得所需的輸出。

例如,如果您輸入的是

1.2
2.3
3.4
4.5
5.6

您的輸出將是

1.2
1.1
2.2
1.1
3.3
2.2
1.1
4.4
3.3
2.2
1.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM