File1
包含基因列表(以字母表示)。每个基因都用它所表达的蛋白质来描述(用字母表示):
a-1
b-2
c-3
File2
还包含一个基因列表,但每个基因都重复多次。其中一些基因类似于File1
:
a
a
a
b
b
c
c
c
我将需要找到File1
常见的所有基因File2
。普通的需要打印到第三个文件中(也需要多个副本)。除此之外,基因表达的蛋白质类型也需要与其一起书写(就像中的File1
)。
如何获得以下内容File3
?
a-1
a-1
a-1
b-2
b-2
c-3
c-3
c-3
这是使用gawk做到这一点的简单方法,它具有一个内置变量ARGIND
,即ARGV
正在处理的当前文件的索引。
我们在上分割第一个文件的每个输入行,-
并使用第一个字段索引到table
存储整个行的数组中。对于第二个文件(以及随后的任何文件),我们使用整行作为索引table
以检索所需的行。
BEGIN{FS = "-"}
ARGIND==1{table[$1] = $0}
ARGIND>1{print table[$0]}
还是单线:
awk 'BEGIN{FS = "-"}; ARGIND==1{table[$1] = $0}; ARGIND>1{print table[$0]}' file_1 file_2
这是适用于传统awk的另一个版本。通过将FNR
当前输入文件中的输入记录号与NR
,到目前为止看到的输入记录总数进行比较,来确定当前文件是否是第一个文件。
awk -F'-' 'NR==FNR{table[$1] = $0}; NR>FNR{print table[$0]}' file_1 file_2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句