Shell 如何在一列中查找唯一字符串的数量,后跟给定字符串的位置

Shell 如何在一列中查找唯一字符串的数量,后跟给定字符串的位置,shell,awk,uniq,Shell,Awk,Uniq,我需要从tsv输入文件中获取两件事情: 1-查找给定列中单个值以逗号分隔的唯一字符串的数量。为此,我使用了下面的命令,它给了我唯一的值 $awk < input.tsv '{print $5}' | sort | uniq | wc -l 因此,在本例中,字符串是gene name,我想计算第5列的整个范围内的唯一字符串,其中它们由逗号和空格分隔 2-接下来,数据的顺序是固定的,并按照第2列的分数排列。所以,我想知道在第5列(基因符号)的排名列表中,感兴趣的基因在哪里。这必须在删除重复项

我需要从tsv输入文件中获取两件事情:

1-查找给定列中单个值以逗号分隔的唯一字符串的数量。为此,我使用了下面的命令,它给了我唯一的值

$awk < input.tsv '{print $5}' | sort | uniq | wc -l
因此,在本例中,字符串是gene name,我想计算第5列的整个范围内的唯一字符串,其中它们由逗号和空格分隔

2-接下来,数据的顺序是固定的,并按照第2列的分数排列。所以,我想知道在第5列(基因符号)的排名列表中,感兴趣的基因在哪里。这必须在删除重复项后进行,因为相同的基因是根据其他列中的参数重复的,但这不涉及我的最终输出。我只需要关注第2列的排名列表。我该怎么做?是否有一个命令,我可以管道以上的命令,以获得给定值的位置

预期产出: 如果我在第1点输入命令,那么它应该在第5列中给出唯一的基因。我在第五栏一共有18个基因。但唯一值是14。若感兴趣的基因是TTN,那个么它的第一次出现在原始排名列表的第二位。因此,我感兴趣的基因所在的预期答案应该是2

$14
$2

感谢

欢迎使用SO,特别感谢您在问题中以代码的形式添加您的努力。请在您的问题中添加输入和预期输出的样本,然后让我们知道。请在代码标签中将您的样本添加到您的问题中,然后让我们知道。嗨,Ravinder,我的输入文件有6列:p值得分疾病Id疾病名称基因符号Entrez Id,因此我的数据按第二列得分排序。然而,第五列中的条目(基因符号)在某些行中有多个条目,因此我无法在excel中执行简单的删除重复功能。预期的结果是计算第五列中的独特基因,并在删除重复基因后确定候选基因在该列中的排名。例如,第五栏中的一个条目是“LTBP4(8425)、DMD(1756)、TPM1(7168)”注释并非用于编写样本,请您在代码标签中的问题中添加样本,然后让我们知道。啊,我明白了。我是个新手。不确定如何添加代码标记。但我刚刚编辑了我的帖子。现在信息量够多了吗?
$14
$2