我有一个包含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
除了整数之外,一切都是浮点数,并且应该评估减法
答案 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