使用 AWK 比较同一列中的值

Using AWK to compare values in the same column

我正在使用 AWK,我一直在尝试将一列中的前一个值与下一列中的值进行比较,直到找到最高值,但我没能做到。

awk ' >=  {print }'

有了上面的内容,return我得到了每一个值

例如:

money:
49
90
30
900

我想要 return 900

像这样:

awk 'int() &&  > n{n=}END{print n}' file

假设列由默认 (white-space) 分隔符分隔,以下 awk 行检查每个数据行中的第 6 个值,看它是否大于任何先前看到的值 (currentBEGIN 块中设置为零,每次遇到更大的第 6 个值时都会更新)。 END 块打印保存在 current 中的最终值(这是第 6 个字段的最大值)"

awk 'BEGIN {current=0} NR>1{if (>current) current=} END {print current}' dataFile.txt

对于.csv的数据,在BEGIN块中可以将文件分隔符定义为带FS=","的逗号:

awk 'BEGIN {FS=","; current=0} NR>1{if (>current) current=} END {print current}' dataFile.csv
$ awk '(NR>1) && ((NR==2) || (>max)){max=} END{if (max != "") print max}' file
900

以上内容基于您发布的示例(包括 money: header 行),但即使所有输入值为 0 或负数或输入文件为空的。如果您感兴趣的实际字段编号是 6,请将 </code> 更改为 <code>

同时考虑:

$ tail -n +2 file | cut -f1 | sort -rn | head -1
900

并将 -f1 更改为 -f6

在 awk 中使用 -F'<char>' 设置分隔符,必要时使用 -d'<char>' 剪切。

$ awk 'NR==2  {max=} 
       >max {max=} 
       END    {print max}' file