使用shell命令

时间:2018-05-30 01:57:38

标签: bash shell

问题似乎很简单,但这里有一个转折点。 考虑带有数据的文件:

  

A,B
  A,C
  A,d
  d,A
  C,A
  B,A

在这里,我需要一个bash命令,它给出了出现次数

  

A,B
  B,A

作为单一计数。因此,此示例的总计数应为3而不是6。

2 个答案:

答案 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