使用 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 个值,看它是否大于任何先前看到的值 (current
在 BEGIN
块中设置为零,每次遇到更大的第 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
我正在使用 AWK,我一直在尝试将一列中的前一个值与下一列中的值进行比较,直到找到最高值,但我没能做到。
awk ' >= {print }'
有了上面的内容,return我得到了每一个值
例如:
money:
49
90
30
900
我想要 return 900
像这样:
awk 'int() && > n{n=}END{print n}' file
假设列由默认 (white-space) 分隔符分隔,以下 awk 行检查每个数据行中的第 6 个值,看它是否大于任何先前看到的值 (current
在 BEGIN
块中设置为零,每次遇到更大的第 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