Database 如何使用awk查找列中的最大值
我有一个文件,其中有两组数据被一个空行分割:Database 如何使用awk查找列中的最大值,database,awk,spreadsheet,Database,Awk,Spreadsheet,我有一个文件,其中有两组数据被一个空行分割: a 3 b 2 c 1 e 5 d 8 f 1 是否有办法找到每组第二列的最大值,并用awk打印相应的行?结果应该是: b 3 d 8 谢谢。您可以尝试通过执行以下操作来分离数据集: awk-vrs='NR==1{print}您的文件>另一个文件 这将返回第一个数据集,然后将NF==2更改为 第二个数据集, 然后找到每个数据集中的最大值,如中所示 请您根据GNUaw
a 3
b 2
c 1
e 5
d 8
f 1
是否有办法找到每组第二列的最大值,并用awk打印相应的行?结果应该是:
b 3
d 8
谢谢。您可以尝试通过执行以下操作来分离数据集:
awk-vrs='NR==1{print}您的文件>另一个文件
这将返回第一个数据集,然后将NF==2更改为 第二个数据集,
然后找到每个数据集中的最大值,如中所示
请您根据GNU
awk
中显示的样本,尝试以下内容,并进行编写和测试
awk '
!NF{
if(max!=""){ print arr[max],max }
max=""
}
{
max=( (max<$2) || (max=="") ? $2 : max )
arr[$2]=$1
}
END{
if(max!=""){ print arr[max],max }
}
' Input_file
awk'
!核因子{
如果(max!=“”){print arr[max],max}
max=“”
}
{
max=((max您可以使用此备用gnu awk
:
awk-v RS='1〕{
max=“”
拆分($0,a,/[^[:空格:]+/,m)
对于(i=1;i在m中;i+=2)
如果(!max | | m[i+1]>max){
mi=i
最大值=m[i+1]
}
打印m[mi],m[mi+1]
}"档案"
a 3
d 8
另一个awk:
$ awk '
!$0 {
print n
m=n=""
}
$2>m {
m=$2
n=$0
}
END {
print n
}' file
输出:
a 3
d 8
另一个awk
$ awk '{cmd="sort -k2nr | head -1"} !NF{close(cmd)} {print | cmd}' file
a 3
d 8
对每个块运行命令以查找块最大值。如果我有很多数据集,并且无法手动更改NR标志,有一种方法吗?我得到一个语法错误,指向:arr[$2]=$1@RIXS,这是一个经过测试的解决方案,您能正确复制/粘贴它吗(确保”
单引号也在awk
code中)并运行它。另外,在输入文件的地方,提供你想由它处理的文件名。谢谢你的评论,我把代码放在一个单独的awk脚本中,它工作了!!但我真的不明白发生了什么on@RIXS,我已经为解决方案添加了详细的解释,如果有任何疑问,请让我知道。为什么第一行是输出B3
而不是A3
?如果这是一个打字错误,请你的问题来解决它。
$ awk '{cmd="sort -k2nr | head -1"} !NF{close(cmd)} {print | cmd}' file
a 3
d 8