我有一个大数据集,如下所示:
35.7337 408 0.5
35.732 407 0.5
35.7301 406 0.5
35.7281 405 0.5
35.7259 404 0.5
35.7236 403 0.5
35.7212 402 0.5
35.7187 401 0.5
35.7162 400 0.5
35.7136 399 0.5
35.711 398 0.5
35.7085 397 0.5
35.706 396 0.5
35.7036 395 0.5
35.7013 394 0.5
35.6992 393 0.5
Run Code Online (Sandbox Code Playgroud)
现在,我想获得 column1 的最大值;仅在 column2 小于 400 的值和 column2 大于 400 的 column1 的 Max 值中。 column 2 和 column1 中没有负值。不需要第 2==400 列,因为预期结果应远离 $2==400。
所以我想要的输出
35.7136 (second column value <400)
35.7337 (second column value > 400)
Run Code Online (Sandbox Code Playgroud)
csvsql -HS -d' ' --query 'select max(a) from file where b<400' file
Run Code Online (Sandbox Code Playgroud)
对于制表符分隔的内容,使用-t代替-d' '
或awk:
awk '
$2<400 && $1>max1{max1=$1}
$2>400 && $1>max2{max2=$1}
END {printf "%s (second column value < 400)\n%s (second column value > 400)\n",max1,max2}
' file
Run Code Online (Sandbox Code Playgroud)
如果第 1 列可以为负数,则必须初始化max1and max2,因为如果未设置,则 max1 等于 0 $1>max1。