在一个文件中查找具有相同列对的行

范吉利斯·西奥多拉基斯

假设我有这个制表符分隔的文件

id1 term1 term2
id2 term1 term2
id3 tern2 term3

我想做的是计算相同的column2 column3出现次数以及它们所引用的ID。

因此,新的制表符分隔文件将如下所示:

term1 term2 2 id1,id2
term2 term3 1 id3

我已经尝试过这种单线,这是我最接近所需解决方案的一种

awk '{count[$2,$3]++;} END {for (word in count) printf("%s\t%s\n", word,count[word])}'

但是我得到的是:

term1 term2 2
term2 term3 1

在术语之间是一个矩形。

任何与Perl或awk或其他任何方式有关的想法都会很可爱。

起初我以为Perl会更好,但我的一个朋友建议awk。这是我第一次接触awk。

鲍罗丁

该解决方案按您的要求进行

数组的@pairs唯一目的是保留输入数据的顺序。如果不需要,则可以大大减少代码

我假设给定的第2列/第3列对值可能在具有相同ID的情况下出现多次。这意味着我必须与累加相关ID分开计算该对的出现次数。如果不正确,那么计数就是每对ID的数量

use strict;
use warnings;
use feature 'say';

my %pairs;
my @pairs;

while ( <> ) {

    chomp;
    my ($id, $pair) = split "\t", $_, 2;

    push @pairs, $pair unless $pairs{$pair};

    ++$pairs{$pair}{count};
    $pairs{$pair}{ids}{$id} = 1;
}

for my $pair ( @pairs ) {
    my ($n, $ids) = @{ $pairs{$pair} }{qw/ count ids /};
    say join "\t", $pair, $n, join(',', keys %$ids);
}

输出

term1 term2 2   id1,id2
tern2 term3 1   id3

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在一个或多个列中查找具有完全相同值的行

来自分类Dev

在两个文件的列中查找具有相同值的行

来自分类Dev

查找与另一个数据框中的列具有相同的非唯一列值的数据框中的行

来自分类Dev

在列中查找所有相同的元素并创建一个新文件

来自分类Dev

如何在python中合并具有相同第一个单词的文件行?

来自分类Dev

如何在基于一个列的其他表中查找具有相同值的表名

来自分类Dev

如何合并除一个列外所有列中具有相同信息的行?

来自分类Dev

在另一个位置查找并创建具有相同名称的空文件

来自分类Dev

对于每一行,查找列中具有相同值的所有行

来自分类Dev

对于当前目录中的所有文件,请在另一个目录中查找具有相同前缀的文件。[R

来自分类Dev

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

来自分类Dev

Perl脚本使用另一个文件从一个管道分隔的文件中删除行具有一个匹配的列

来自分类Dev

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

来自分类Dev

需要文件中的数字列。然后每个数字必须通过查找/替换 sed 转到另一个文件。问题:最终文件都具有相同的编号

来自分类Dev

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

来自分类Dev

如何在R中每n行创建一个具有相同ID的新列?

来自分类Dev

在Shell中的一个文件中查找并替换所有相同的单词

来自分类Dev

如何使用Unix命令为特定列查找具有相同值的文件中的行?

来自分类Dev

删除第一列相同的第二行中第二个具有不同日期的行中的一个

来自分类Dev

查找另一列中具有相同值的行-Python

来自分类Dev

从Python的文本文件中的列中删除前导零,然后将具有两个文本文件的相同字符串的相似行合并为一个

来自分类Dev

根据行中的另一个变量删除具有相同值的行

来自分类Dev

在不同的列中查找具有相同值的行对

来自分类Dev

bash-在两个文件中获取具有相同列值的所有行

来自分类Dev

在一行中查找具有特定值的第一个和最后一个条目

来自分类Dev

查询以过滤具有相同非主键值的行,然后从 Oracle 中的结果中排除具有另一个空列的记录

来自分类Dev

使用Boomi,我如何创建一个平面文件配置文件,它在平面文件中与“标题”数据相同的物理行上具有“线”数据?

来自分类Dev

在具有多个节的文件的一个节中查找字符串

来自分类Dev

Excel如何将具有相同ID号的所有行合并到一个大型数据集的一列中?

Related 相关文章

  1. 1

    如何在一个或多个列中查找具有完全相同值的行

  2. 2

    在两个文件的列中查找具有相同值的行

  3. 3

    查找与另一个数据框中的列具有相同的非唯一列值的数据框中的行

  4. 4

    在列中查找所有相同的元素并创建一个新文件

  5. 5

    如何在python中合并具有相同第一个单词的文件行?

  6. 6

    如何在基于一个列的其他表中查找具有相同值的表名

  7. 7

    如何合并除一个列外所有列中具有相同信息的行?

  8. 8

    在另一个位置查找并创建具有相同名称的空文件

  9. 9

    对于每一行,查找列中具有相同值的所有行

  10. 10

    对于当前目录中的所有文件,请在另一个目录中查找具有相同前缀的文件。[R

  11. 11

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

  12. 12

    Perl脚本使用另一个文件从一个管道分隔的文件中删除行具有一个匹配的列

  13. 13

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

  14. 14

    需要文件中的数字列。然后每个数字必须通过查找/替换 sed 转到另一个文件。问题:最终文件都具有相同的编号

  15. 15

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

  16. 16

    如何在R中每n行创建一个具有相同ID的新列?

  17. 17

    在Shell中的一个文件中查找并替换所有相同的单词

  18. 18

    如何使用Unix命令为特定列查找具有相同值的文件中的行?

  19. 19

    删除第一列相同的第二行中第二个具有不同日期的行中的一个

  20. 20

    查找另一列中具有相同值的行-Python

  21. 21

    从Python的文本文件中的列中删除前导零,然后将具有两个文本文件的相同字符串的相似行合并为一个

  22. 22

    根据行中的另一个变量删除具有相同值的行

  23. 23

    在不同的列中查找具有相同值的行对

  24. 24

    bash-在两个文件中获取具有相同列值的所有行

  25. 25

    在一行中查找具有特定值的第一个和最后一个条目

  26. 26

    查询以过滤具有相同非主键值的行,然后从 Oracle 中的结果中排除具有另一个空列的记录

  27. 27

    使用Boomi,我如何创建一个平面文件配置文件,它在平面文件中与“标题”数据相同的物理行上具有“线”数据?

  28. 28

    在具有多个节的文件的一个节中查找字符串

  29. 29

    Excel如何将具有相同ID号的所有行合并到一个大型数据集的一列中?

热门标签

归档