bash - 使用 shell 命令计算文件中文本的出现次数
问题描述
问题看起来很简单,但这里有一个转折点。考虑一个带有数据的文件:
A,B
A,C
A,D
D,A
C,A
B,A
在这里,我需要一个 bash 命令来计算发生次数
A,B
B,A
作为一个单一的计数。因此,此示例的总数应该是 3 而不是 6。
解决方案
与其他答案基本相同,但它确定了散列组件的顺序:
$ 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
or $1
。所以,它是引用a[$1,$2]
or a[$2,$1]
。经测试:
A,A
A,A
这<=
可能只是<
在后一个组件中,导致a[$1,$1]
if $1==$2
。
推荐阅读
- reactjs - 反应原生获取更新状态以进行保存
- web-services - 如何使用 SoapUI 检查“JavaScriptSerializer”是否正常工作
- node.js - express.static 不呈现我附加到 html 内容的 CSS 文件,我使用的是 Ubuntu
- java - 测试应用程序是否是线程安全的
- mysql - 我可以在 INSERT SELECT 语句中使用变量吗?
- excel - 重复特定列中的单元格列表,以查找值列表何时结束
- sql - 如何在sql中合并拆分事务?
- javascript - 远程 Vue.js 的 Internet Explorer 问题
- php - 如果变量为空,如何避免换行?
- mysql - 如何获取具有不同字段的查询输出