在bash中减去循环中的浮点数

时间:2015-07-24 00:03:29

标签: bash awk

我有一个包含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

除了整数之外,一切都是浮点数,并且应该评估减法

1 个答案:

答案 0 :(得分:3)

如果你把它放入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
相关问题