linux - 计算列的中值,输出该值并说明是否为 "OK"或 "ERROR"(如果在可接受范围内或之外)

标签 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"}'

请帮忙。

最佳答案

awk 中的 if else 结构存在多个错误
使用一行会使阅读和理解变得困难。这应该没问题:

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"}'

关于linux - 计算列的中值,输出该值并说明是否为 "OK"或 "ERROR"(如果在可接受范围内或之外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26794131/

相关文章:

linux - sed 命令在 gitlab runner 上无法正确执行

linux - 如何修改netcat的输入流?

linux - 比较两列并打印第二个文件中的第二列

awk - 如何在awk中严格比较两个长数字字符串

linux - awk 语法和字符串错误

awk - 计算文件中每一列的平均值

c - 找到未使用的结构和结构成员

linux - 将用户名和其他参数通过管道传递给命令行实用程序

linux - spi-omap2-mcspi.c中注册的McSPIx的基地址在哪里?

arrays - AWK:强制/转换未初始化变量为类型 "array"而不是 "numeric-string"