使用awk获取在一列中具有相同值的各行的所有值

卢卡斯CB

我有一个test-file.csv带有树列的数据集 ( ):

node,contact,mail
AAAA,Peter,[email protected]
BBBB,Hans,[email protected]
CCCC,Dieter,[email protected]
ABABA,Peter,[email protected]
CCDDA,Hans,[email protected]

我喜欢按列扩展标题count并将其重命名nodenodes. 此外,所有条目都应排在第二列 ( mail) 之后。在列count我喜欢得到列的出现次数的数量mail,在nodes所有具有在列的相同值的条目mail应当被打印(空间分离,并且按字母顺序排序)。

这就是我试图实现的目标:

contact,mail,count,nodes
Dieter,dieter@anything,com,1,CCCC
Hans,[email protected],2,BBBB CCDDA
Peter,peter@anything,com,2,AAAA ABABA

我有这个 awk 命令:

awk -F"," '
BEGIN{
  FS=OFS=",";
printf "%s,%s,%s,%s\n", "contact","mail","count","nodes"
}
NR>1{
    counts[$3]++;     # Increment count of lines.
    contact[$2];      # contact
}
END {
    # Iterate over all third-column values.
    for (x in counts) {
    printf "%s,%s,%s,%s\n", contact[x],x,counts[x],"nodes"
    }
}
' test-file.csv | sort --field-separator="," --key=2 -n

然而,这是我的结果 :-( 除了出现次数起作用之外什么都没有。

,[email protected],1,nodes
,[email protected],2,nodes
,[email protected],2,nodes
contact,mail,count,nodes

任何帮助表示赞赏!

阿努巴瓦

你可以使用这个gnu awk

awk '
BEGIN {
   FS = OFS = ","
   printf "%s,%s,%s,%s\n", "contact","mail","count","nodes"
}
NR > 1 {
   ++counts[$3]    # Increment count of lines.
   name[$3] = $2
   map[$3] = ($3 in map ? map[$3] " " : "") $1
}
END {
   # Iterate over all third-column values.
   PROCINFO["sorted_in"]="@ind_str_asc";
   for (k in counts)
       print name[k], k, counts[k], map[k]
}
' test-file.csv

输出:

contact,mail,count,nodes
Dieter,[email protected],1,CCCC
Hans,[email protected],2,BBBB CCDDA
Peter,[email protected],2,AAAA ABABA

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Python获取另一列中具有相同值的值的总和?

如何提取与某行相同的一列中具有相同值的所有行?

一列中具有相同值的多行

如果另一列在SQL Server中相同,则获取具有最小列值的行

根据pyspark中另一列的值编辑具有相同id的列的所有行的值

Pyspark:如何为另一列中具有相同值的所有行设置相同的 id?

如何从同一列中获取所有值?

查找一列中具有相同值而另一列中具有其他值的行?

MySQL 查询一列中具有相同值而另一列中具有不同值的行

选择在一列中具有相同值而在另一列中具有不同值的行

一列中具有相同值的行,将另一列中的所有值求和,并显示1行

删除具有重复的另一列的相同列值的所有行

R获取具有相同但较小的其他列值的唯一列值的计数

在多行的一列中查找具有相同值的行,而另一列具有不同的值

如何从另一列中选中具有相同值的所有复选框

如果某一列包含特定值,则选择具有相同ID的所有行

如何计算另一列中属于不同值的列中的所有相同值

合并多维数组,并对在另一列中具有相同值的列值求和

如何删除另一列中具有特定值的所有 NaN 值的行?

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

使用jquery获取所有单元格值属于html表中的一列

选择在列中具有相同值而在另一列中具有不同值的记录

获取不在同一列但具有指定条件的所有可能值

SQL / Postgres:查找具有相同值的元组(对于另一列中的给定值)

为什么表的一列具有相同的值?

获取所有在熊猫中具有相同值的行

获取所有在python中具有相同值的行?

Pandas - 根据后一列中是否存在值过滤一列中具有相同值和另一列中多个值的行

如果另一列具有相同的值,則檢查一列是否具有相同的值