计算列的中值,输出该值,并在可接受的范围内或之外说“OK”或“ERROR”

时间:2014-11-07 04:36:00

标签: linux awk

我想计算.txt文件中特定列的中值,输出该值,并说明该输出值是否正常。我可以做初始步骤并输出中值,但是不能说输出值是否在可接受的范围内。

我收到语法错误消息,其中包含以下代码:

$ sort -nk9 filename | awk '{a[i++]=$9;} END {x=int((i+1)/2); y=((a[x-1] + a[x])/2); z=(a[x-1]); if ((y >= 0.5 && y <= 2) || (z >= 0.5 && z <=2)); {if (x < (i+1)/2) print "Median OR =", y "ALL OK"; else print "Median OR =", z "ALL OK"}; else print "ERROR - OR outside range 0.5 - 2.0"}'

请帮忙。

1 个答案:

答案 0 :(得分:0)

if中的else awk结构存在多处错误 使用一行,使其难以阅读,理解。这应该没问题:

sort -nk9 t | awk '
    {a[i++]=$9;} 
END {
    x=int((i+1)/2)
    y=((a[x-1] + a[x])/2)
    z=(a[x-1])
    if ((y >= 0.5 && y <= 2) || (z >= 0.5 && z <=2))
        {if (x < (i+1)/2) print "Median OR =", y "ALL OK"
            else print "Median OR =", z "ALL OK"}
        else print "ERROR - OR outside range 0.5 - 2.0"}'