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のすべての可能な値を調べて、各行の単語数を計算するのと同じです。
Mike John 1 1
Pamela Barbara 1 1
Mike Paul 1 0
Roger Paul 1 0
その後、変更内容を希望の変更内容に出力します。
ベストアンサー1
順序が問題にならない場合は、このハッシュソリューションを使用できます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つの名前の接続で初期化されます。これらの名前が逆の順序で再現されると、ハッシュの特定の要素が2に増加します。
出力:
Pamela <-> Barbara
Mike -> Paul
Roger -> Paul
Mike <-> John