问题似乎很简单,但这里有一个转折点。 考虑带有数据的文件:
A,B
A,C
A,d
d,A
C,A
B,A
在这里,我需要一个bash命令,它给出了出现次数
A,B
B,A
作为单一计数。因此,此示例的总计数应为3而不是6。
答案 0 :(得分:0)
基本上与其他答案相同,但它确定了散列的组件顺序:
$ awk -F, '!(($(($1<$2)+1),$(($2<=$1)+1)) in a){a[$(($1<$2)+1),$(($2<=$1)+1)];c++}END{print c}' file
3
解释
$ awk -F, '
!( ( $(($1<$2)+1), $(($2<=$1)+1) ) in a ) {
a[$(($1<$2)+1),$(($2<=$1)+1)]
c++
}
END { print c }' file
$1<$2
为0或1,因此($1<$2)+1
为1或2,$(($1<$2)+1)
为$1
或$2
。同样适用于其他组件$(($2<=$1)+1)
,它可以是$2
或$1
。因此,它引用了a[$1,$2]
或a[$2,$1]
。经测试:
A,A
A,A
<=
在后一个组件中可能只有<
,如果a[$1,$1]
则会$1==$2
。
答案 1 :(得分:-1)
awk
救援!
$ awk -F, '!(($1,$2) in a){a[$1,$2];a[$2,$1];c++} END{print c}' file