在另一个文件中查找一个文件中的模式



我试图在另一个文件中找到一个文件的模式。

文件1中的模式看起来像这样:

ENSG00000203875.13
ENSG00000262691.1
ENSG00000254911.3

文件二包含:

ENSG00000203875.13 aa aaa bbb cc
ENSG00000227782.2
ENSG00000229582.3
ENSG00000241769.7
ENSG00000245904.4
ENSG00000254823.2
ENSG00000254911.3 cc ccc ccc
ENSG00000260213.6
ENSG00000260997.1
ENSG00000261799.1
ENSG00000262691.1 bbb bbb bbb
ENSG00000267249.1
ENSG00000270012.1
ENSG00000270091.1
ENSG00000270361.1
ENSG00000271533.1
ENSG00000271833.1
ENSG00000271870.1
ENSG00000272379.1
ENSG00000272631.1
ENSG00000273066.5
ENSG00000273855.1
ENSG00000278966.2
ENSG00000279332.1
ENSG00000279407.1
ENSG00000279616.1
ENSG00000279684.1
ENSG00000279835.1
ENSG00000286181.1
ENSG00000286986.1
ENSG00000287817.1

我想只找到

ENSG00000203875.13 aa aaa bbb cc
ENSG00000254911.3 cc ccc ccc
ENSG00000262691.1 bbb bbb bbb

作为输出。我很确定grep -f file_one.txt file_two.txt应该做的工作,但相反,我只是得到file_two的内容作为输出。我不知道我犯了什么错。有人能指出来吗?

我会这样做:

for i in $(cat file_one.txt); do grep -i $i file_two.txt; done
ENSG00000203875.13 aa aaa bbb cc
ENSG00000262691.1 bbb bbb bbb
ENSG00000254911.3 cc ccc ccc

您可以考虑使用awk方法,跟踪数组afile_one.txt的第一列的值,然后检查file_two.txt的第一列的值是否存在于数组的键中:

awk 'NR==FNR {a[$0]; next} $1 in a' file_one.txt file_two.txt

输出
ENSG00000203875.13 aa aaa bbb cc
ENSG00000254911.3 cc ccc ccc
ENSG00000262691.1 bbb bbb bbb

另一个选项使用grep:

grep -f file_one.txt file_two.txt

相关内容

  • 没有找到相关文章

最新更新