[英]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.