繁体   English   中英

使用 AWK 比较同一列中的值

[英]Using AWK to compare values in the same column

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

awk '$6 >= $6 {print $6}'

有了上面,它返回给我每一个值

例如:

money:
49
90
30
900

我希望它返回 900

$ awk '(NR>1) && ((NR==2) || ($1>max)){max=$1} END{if (max != "") print max}' file
900

以上基于您发布的示例(包括money:标题行),但即使所有输入值为0或负数或输入文件为空,也可以使用。 如果您感兴趣的真实字段数是 6,则将$1更改为$6 6。

还要考虑:

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

并将-f1更改为-f6

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

像这样:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM