Unix 基于文件1中单个列的公共值的文件2的子集行
我处理的是大型文件,我只想提取一列的值包含在另一个文件的列的值中的行 例如,在文件1中,我有10000行,看起来像这样:Unix 基于文件1中单个列的公共值的文件2的子集行,unix,awk,grep,comm,Unix,Awk,Grep,Comm,我处理的是大型文件,我只想提取一列的值包含在另一个文件的列的值中的行 例如,在文件1中,我有10000行,看起来像这样: Chr13998356 T C Chr1401532 A G Chr14021851 A T 在文件2中(100000+行),我只需要第1列中的a值出现在文件1的第1列中的行。因此,对于文件2,我有: Chr1 401530 G G 60 0 60 11 Chr1 401531 A A 60 0 60 11 Ch
Chr13998356 T C
Chr1401532 A G
Chr14021851 A T
在文件2中(100000+行),我只需要第1列中的a值出现在文件1的第1列中的行。因此,对于文件2,我有:
Chr1 401530 G G 60 0 60 11
Chr1 401531 A A 60 0 60 11
Chr1 401532 A G 30 170 60 11
我想以第三个文件结束,其中包含:
Chr1 401532 A G 30 170 60 11
此文件的行数可能介于几行到10000行之间
在R中,我会在data.table包中使用类似df3的东西,这在R中也应该很快。
$ cat file1
Chr13998356 T C
Chr1401532 A G
Chr14021851 A T
$ cat file2
Chr1 401530 G G 60 0 60 11
Chr1 401531 A A 60 0 60 11
Chr1 401532 A G 30 170 60 11
$ awk 'NR==FNR{vals[$1];next} ($1$2) in vals' file1 file2
Chr1 401532 A G 30 170 60 11