假设我们有一个txt文件,如下所示:
输入:
a1 D1
b1 D1
c1 D1
a1 D2
a1 D3
c1 D3
我想计算第一列中每个元素出现的时间,但也保留第二列提供的信息(某种程度上)。表示了潜在的可能输出格式,但也接受任何一致的替代格式:
可能的输出1:
3 a1 D1,D2,D3
1 b1 D1
2 c1 D1,D3
可能的输出2:
3 a1 D1
1 b1 D1
2 c1 D1
3 a1 D2
3 a1 D3
1 c1 D3
我该怎么做呢?我猜是sort -k 1 input | uniq -c <keep col2>
的组合,或者可能使用awk
,但是我不能写任何有效的东西。但是,所有的答案都被考虑了。
2条答案
按热度按时间vom3gejh1#
使用任意awk:
ar5n3qh52#
我将按照以下方式利用GNU
AWK
完成此任务,让file.txt
内容那么
给出输出
说明:2遍解决方案(观察
file.txt
是否重复),第一遍计算第一列值的出现次数,并将该数据存储到数组arr
中,第二遍用于打印数组中计算出的数字,然后打印整行。