考虑一个管道分隔文件,
文件
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] 删除。
我来说两句