检查A列和B列值是否双向的最简单方法是什么?
要检查的输出:
Mike John
John Mike
Pamela Barbara
Barbara Pamela
Mike Paul
Roger Paul
期望的输出
Mike <-> John
Pamela <-> Barbara
Mike -> Paul
Roger -> Paul
PS.
首先,它可能像在A和B列中查找所有可能的值,然后为每一行执行wordcount
Mike John 1 1
Pamela Barbara 1 1
Mike Paul 1 0
Roger Paul 1 0
然后将更改输出到所需的值.
解决方法:
如果订单不是问题,您可以在awk中使用此哈希解决方案.
BEGIN { d = "|" }
{
if(names[$2 d $1] > 0)
++names[$2 d $1]
else
++names[$1 d $2]
}
END {
for(n in names) {
split(n, a, d)
if(names[n] >= 2)
print a[1] " <-> " a[2]
if(names[n] == 1)
print a[1] " -> " a[2]
}
}
哈希值被初始化为由管道(d变量)分隔的两个名称的串联;如果这些名称以相反的顺序再次出现,则哈希中的特定元素将增加到2.
输出:
Pamela <-> Barbara
Mike -> Paul
Roger -> Paul
Mike <-> John
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。