【发布时间】:2016-12-07 21:09:26
【问题描述】:
我有一个制表符分隔的矩阵(比如文件名)。
如果我这样做:
head -1 filename | awk -F "\t" '{i=0;med=0;for(i=2;i<=NF;i++) array[i]=$i;asort(array);print length(array)}'
接着是:
head -2 filename | tail -1 | awk -F "\t" '{i=0;med=0;for(i=2;i<=NF;i++) array[i]=$i;asort(array);print length(array)}'
基本上所有行的答案都是 24(相同的答案)。
但如果我这样做:
cat filename | awk -F "\t" '{i=0;med=0;for(i=2;i<=NF;i++) array[i]=$i;asort(array);print length(array)}'
我明白了:
24
25
25
25
25 ...
为什么会这样?
以下是输入文件:
Case1 17.49 0.643 0.366 11.892 0.85 5.125 0.589 0.192 0.222 0.231 27.434 0.228 0 0.111 0.568 0.736 0.125 0.038 0.218 0.253 0.055 0.019 0 0.078
Case2 0.944 2.412 4.296 0.329 0.399 1.625 0.196 0.038 0.381 0.208 0.045 1.253 0.382 0.111 0.324 0.268 0.458 0.352 0 1.423 0.887 0.444 5.882 0.543
Case3 21.266 14.952 24.406 10.977 8.511 21.75 6.68 0.613 12.433 1.48 1.441 21.648 6.972 42.931 8.029 4.883 11.912 6.248 4.949 26.882 9.756 5.366 38.655 12.723
Case4 0.888 0 0.594 0.549 0.105 0.125 0 0 0.571 0.116 0.019 1.177 0.573 0.111 0.081 0.401 0 0.05 0.073 0 0 0 0 0.543
【问题讨论】:
-
请分享minimal reproducible example,以便我们进行测试。
-
已经给出了测试代码的输入文件
-
我看不到您的
awk命令如何返回 24/25/... 它没有任何打印或任何触发它的东西,所以它的输出应该是空白的。 -
将脚本的目标明确附加到问题中。
-
添加了“打印长度(数组)”,我在此处粘贴脚本时碰巧跳过了它......我试图找到每行值的第三个四分位数。所以除非我确定数组长度是正确的,否则继续前进是徒劳的。
标签: arrays awk gawk median asort