gpt4 book ai didi

linux - 根据awk中单个字段中的非数字条件删除重复行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:01 24 4
gpt4 key购买 nike

原始数据:

    1234,yes
2234,no
1234,no
5678,yes

我试图根据第二列(是||否)删除重复项,其中只有带有“否”的列将被删除。我看到很多处理整数的解决方案,而不是字符串。到目前为止,我想到了这个。

awk -F"," '{if($1 in a)
a[$1]=$2=='yes'?$0:a[$1];
else
a[$1]=$0}
END{for(i in a)print a[i]}'

但是,脚本似乎不起作用,因为它删除了所有重复的条目。如果有人能帮助我,我将不胜感激。

最佳答案


你的问题很简单:你忘了引用正确的条件:

awk -F"," '{if($1 in a)a[$1]=$2=="yes"?$0:a[$1];else a[$1]=$0}END{for(i in a)print a[i]}'

你必须写$2=="yes" 而不是$2=='yes'

编辑:
对于最终结果不显示",no",你可以试试这个变体(更难适应你对以前模式的需求):

 awk -F"," '{if($1 in a){if($2=="yes"){a[$1]=$0;}}else{sub(/,no$/,"",$0);a[$1]=$0}}END{for(i in a)print a[i]}'


关于sub(...)函数的更多信息,你可以去there .

很高兴为您提供帮助:)

关于linux - 根据awk中单个字段中的非数字条件删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28953549/

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