gpt4 book ai didi

linux - 如何比较两个不同的文件并提取重叠数据?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:39 25 4
gpt4 key购买 nike

我是编程界的新手,所以如果我只是问了一个简单或明显的问题,请原谅我。我真的需要很多帮助。

我目前有两组数据。

第一个看起来像这样(称之为 file1):

GeneName
TAF13
ZC3H6
RAC3
MED16
FAT3
SCRG1
GRM3
DHX16
LRRN4CL
STMN4
PCDHGA11
RPLP1
WASF1
KATNAL1
FTL1
D8ERTD738E

第二个看起来像这样(称之为“file2”):

GeneName    Chr Start   End SumOfMerge  67_1    67_2    67_3    68_1    68_2    68_3    69_1    69_2    69_3    70_1    70_2    70_3    71_1    71_2    71_3    72_1    72_2    72_3    73_1    73_2    73_3    
LOC100288069 chr1 713126 714875 13 NA nPk1 nPk1 NA nPk1 nPk1 NA NA nPk1 NA nPk2 nPk1 NA nPk1 nPk1 NA nPk1 nPk1 NA nPk1 nPk1
FAM87B chr1 752176 752900 20 nPk2 nPk3 nPk2 nPk2 nPk3 nPk3 nPk2 nPk3 nPk3 nPk2 nPk4 NA nPk3 nPk3 nPk3 nPk3 nPk3 nPk2 nPk2 nPk3 nPk3
LINC00115 chr1 761026 763300 20 nPk7 nPk6 nPk3 nPk7 nPk5 nPk4 nPk7 nPk8 nPk5 NA nPk5 nPk3 nPk8 nPk6 nPk4 nPk7 nPk7 nPk3 nPk8 nPk7 nPk4
SAMD11 chr1 858401 862175 20 nPk16 NA nPk10 nPk16 nPk13 nPk13|nPk14 nPk16 nPk16 nPk13 nPk14 nPk13 NA nPk18 nPk13 nPk11|nPk12 nPk17 NA nPk12 nPk17 nPk16 nPk11
KLHL17|NOC2L chr1 892751 897375 21 nPk23 nPk14 nPk15 nPk24|nPk25 NA nPk18 nPk25 nPk20 nPk18 nPk24 nPk18 nPk10 nPk27|nPk28 nPk17 NA nPk25 nPk18 nPk18 nPk24 nPk20 nPk16
HES4 chr1 934201 937725 14 nPk30 nPk19 nPk19 NA nPk24 nPk22 nPk33 nPk25 nPk22 NA NA NA NA NA nPk23 nPk32 nPk23 nPk22 NA nPk25 nPk20
ISG15 chr1 948076 948750 7 nPk32 NA NA nPk33 NA NA nPk36 NA NA nPk35 NA NA nPk37 NA NA nPk34 NA NA nPk36 NA NA
AGRN chr1 954376 954875 21 nPk34 nPk22 nPk21 nPk36 nPk27 nPk24 nPk38 nPk28 nPk24 nPk37 nPk24 nPk16 nPk39 nPk24 nPk25 nPk36 nPk26 nPk24 nPk38 nPk28 nPk22
AGRN chr1 954951 955275 11 NA NA nPk22 NA nPk28 nPk25 NA nPk29 nPk25 NA nPk25 nPk17 NA NA nPk26 NA nPk27 nPk25 NA NA nPk23
C1orf159 chr1 1051051 1052500 21 nPk53 nPk38 nPk37 nPk56 nPk42 nPk39 nPk60 nPk42 nPk41 nPk54 nPk38 nPk25 nPk55 nPk40 nPk40 nPk57 nPk45 nPk38 nPk55 nPk50 nPk38
LINC01342 chr1 1070301 1073175 2 NA NA NA NA NA NA NA NA NA NA nPk40 nPk28 NA NA NA NA NA NA NA NA NA
TTLL10 chr1 1108776 1109450 1 NA NA NA NA NA NA NA NA NA nPk65 Na NA NA NA NA NA NA NA NA NA NA
TNFRSF4 chr1 1150276 1150750 2 NA NA NA NA NA NA NA NA NA nPk72 NA NA nPk72 NA NA NA NA NA NA NA NA
SDF4 chr1 1165926 1167475 4 NA NA NA NA NA nPk48 NA NA NA NA NA NA NA NA nPk50 NA NA nPk45 NA NA nPk46

如果第二个数据出来的很乱,请见谅,实际上是一个26列的数据,每列之间用tab空格分隔。

我的目标是通过第一列“GeneName”比较 file1 和 file2,并将 file2 中的行提取到新文件 file3。

file3 应该看起来像 file2,只是只包含与 file1 具有相同 GeneName 的行。

目前,我已经尝试过 commjoingrep -f,没有一个给出我想要的解决方案。我认为 grep 可能足以完成这项工作,但我不知道正确的选项。如果这个问题还有其他可能的解决方案,请与我分享。谢谢你的时间!

最佳答案

Grep + bash:

grep -f <(tail -n +2 file1 | sed 's/^/^/g') file2 > file3

这将删除 GeneName 列(使用 tail -n +2 跳过第一行 - 从第二行开始打印)并添加 ^(行首的正则表达式)到每一行的开头 - 这样的列表非常适合 grep -f 匹配行并将它们写入 file3。

假设您不希望输出中出现标题 (GeneName) 行。

关于linux - 如何比较两个不同的文件并提取重叠数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38273371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com