Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何使用awk查找列中的最大值_Database_Awk_Spreadsheet - Fatal编程技术网

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