[英]unix remove duplicates with swapped names
这是一个文件,在不同的位置交换了column1和2中的重复数据。
$ cat partnership.dat
V_Kohli|Yuvraj_Singh|57
PA_Patel|CH_Gayle|5
CH_Gayle|V_Kohli|18
MA_Starc|S_Rana|14
S_Rana|MA_Starc|14
V_Kohli|CH_Gayle|18
CH_Gayle|PA_Patel|5
Yuvraj_Singh|V_Kohli|57
V_Kohli|AB_de_Villiers|61
AB_de_Villiers|V_Kohli|61
S_Rana|AB_de_Villiers|5
AB_de_Villiers|S_Rana|5
我正在尝试删除重复项并获取以下数据
V_Kohli|Yuvraj_Singh|57
PA_Patel|CH_Gayle|5
CH_Gayle|V_Kohli|18
MA_Starc|S_Rana|14
V_Kohli|AB_de_Villiers|61
S_Rana|AB_de_Villiers|5
下面的awk命令列出了所有记录。
awk -F"|" ' NR==FNR {a[$1]=$2;b[$2$1]=$3;next} ($2$1 in b) { print }' partnership.dat partnership.dat
这可以解决吗?
您可以简单地通过制作散列图来对文件进行分组,先从$1 $2
取出密钥,再从$2 $1
取出密钥。 这样,我们仅在与$1
和$2
的顺序无关的情况下唯一地识别一行
awk -F'|' '!unique[$1 FS $2]++ && !unique[$2 FS $1]++' partnership.dat
惯用的awk方法使用的内存是使用两个不同数组索引(以它们可能的不同顺序)的字段的一半:
$ awk -F'|' '!seen[$1>$2 ? $1 FS $2 : $2 FS $1]++' file
V_Kohli|Yuvraj_Singh|57
PA_Patel|CH_Gayle|5
CH_Gayle|V_Kohli|18
MA_Starc|S_Rana|14
V_Kohli|AB_de_Villiers|61
S_Rana|AB_de_Villiers|5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.