gpt4 book ai didi

awk 打印每个类别的所有最小值

转载 作者:行者123 更新时间:2023-12-01 09:13:05 25 4
gpt4 key购买 nike

想要打印所有基于$1 和$3 组合的最小值。如果有两条或多条线路可用对于具有 $1 和 $3 的唯一组合的最小值,则需要打印所有行。例如,$1-"Abc"的最小值 $3-"10"出现两次,即 Abc,yyy,10,aaa 和 Abc,ttt,10,aaa。输入文件未按任何顺序排序。

输入.txt

Country,Desc,Amount,Details
Abc,xxx,20,aaa
Abc,yyy,10,aaa
ghi,ttt,25,ccc
Abc,zzz,35,aaa
def,xxx,30,bbb
Abc,ttt,10,aaa
def,yyy,20,bbb
ghi,yyy,25,ccc
def,zzz,45,bbb
ghi,xxx,35,ccc
ghi,zzz,50,ccc

想要打印输出以及标题行 NR==1 , {print}

期望的输出.txt

Country,Desc,Amount,Details
Abc,yyy,10,aaa
Abc,ttt,10,aaa
ghi,ttt,25,ccc
ghi,yyy,25,ccc
def,yyy,20,bbb

我使用两个命令来获得所需的输出,第一个是根据 $1 和 $3 sort 输入文件,然后是第二个命令 awk -F, '!seen[$1]++' 寻找您的建议以简单地喜欢一个类轮。

最佳答案

处理文件两次的 awk。在第一次运行时,它为每个 $1 选择最小的 $3,在第二次运行时,它打印最小的:

$ awk '
BEGIN{FS=","} # delimiter
NR==FNR { # first run
if ($1 in a==0 || $3<a[$1])
a[$1]=$3
next
}
$3==a[$1] # || FNR==1 # if Country is data not header
' file file # uncomment the FNR==1
Country,Desc,Amount,Details
Abc,yyy,10,aaa
ghi,ttt,25,ccc
Abc,ttt,10,aaa
def,yyy,20,bbb
ghi,yyy,25,ccc

关于awk 打印每个类别的所有最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45652786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com