如果有重复的 id 列,则从管道分隔文件中删除具有特定标志的行

比利19穆拉米

考虑一个管道分隔文件,

文件

id1|name|address|yes
id2|name|address|yes
id2|name|address|no
id3|name|address|yes

第一列是“id”,最后一列是标志。如何删除具有重复 id (id2) 并标记为“否”的行?

预期输出:

id1|name|address|yes
id2|name|address|yes
id3|name|address|yes

我尝试使用 awk 来获取重复项

awk -F'|' 'NR==FNR{cnt[$1]++; next} cnt[$1]>1' file file

怎么去掉线?

注意:文件将有 1000 行,并且 id 可能不在排序顺序中。

普....
awk -F'|' '!a[$1]++ && $NF != "no"' file
id1|name|address|yes
id2|name|address|yes
id3|name|address|yes

简要说明:
-F'|':将字段分隔符设置为|
!a[$1]++:如果第一列以前从未见过,则为真
&&:AND
$NF != "no":最后一列不等于no

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章