标签: join

如何根据两列的匹配合并两个文件?

我有 file1 喜欢:

0   AFFX-SNP-000541  NA
0   AFFX-SNP-002255  NA
1   rs12103          0.6401
1   rs12103_1247494  0.696
1   rs12142199       0.7672
Run Code Online (Sandbox Code Playgroud)

还有一个文件2:

0   AFFX-SNP-000541   1
0   AFFX-SNP-002255   1
1   rs12103           0.5596
1   rs12103_1247494   0.5581
1   rs12142199        0.4931
Run Code Online (Sandbox Code Playgroud)

并想要一个 file3 ,这样:

0   AFFX-SNP-000541     NA       1
0   AFFX-SNP-002255     NA       1
1   rs12103             0.6401   0.5596
1   rs12103_1247494     0.696    0.5581
1   rs12142199          0.7672   0.4931
Run Code Online (Sandbox Code Playgroud)

这意味着将 file2 的第 4 列按第 2 列的名称放入 file1。

awk text-processing join bioinformatics

40
推荐指数
3
解决办法
15万
查看次数

加入:“文件 2 未按排序顺序”

我有两个文件 _jeter3.txt 和 _jeter1.txt

我检查过它们都使用第 20 列排序 sort -c

sort -t '     ' -c -k20,20 _jeter3.txt
sort -t '     ' -c -k20,20 _jeter1.txt
#no errors
Run Code Online (Sandbox Code Playgroud)

但是当我想要join两个文件时出现错误,它说第二个文件没有排序:

join -t '   ' -1 20 -2 20 _jeter1.txt _jeter3.txt > /dev/null
join: File 2 is not in sorted order
Run Code Online (Sandbox Code Playgroud)

我不明白为什么。

cat /etc/*-release #FYI
openSUSE 11.0 (i586)
VERSION = 11.0
Run Code Online (Sandbox Code Playgroud)

更新:使用 ' sort -f' 和join -i(均不区分大小写)修复了问题。但这并不能解释我最初的问题。

更新:排序和连接的版本:

> join --version
join (GNU coreutils) 6.11
Copyright (C) 2008 …
Run Code Online (Sandbox Code Playgroud)

sort join

15
推荐指数
6
解决办法
5万
查看次数

用匹配的列连接两个文件

文件1.txt

    id                            No
    gi|371443199|gb|JH556661.1| 7907290
    gi|371443198|gb|JH556662.1| 7573913
    gi|371443197|gb|JH556663.1| 7384412
    gi|371440577|gb|JH559283.1| 6931777
Run Code Online (Sandbox Code Playgroud)

文件2.txt

 id                              P       R       S
 gi|367088741|gb|AGAJ01056324.1| 5       5       0
 gi|371443198|gb|JH556662.1|     2       2       0
 gi|367090281|gb|AGAJ01054784.1| 4       4       0
 gi|371440577|gb|JH559283.1|     21      19      2
Run Code Online (Sandbox Code Playgroud)

输出.txt

 id                              P       R       S  NO
 gi|371443198|gb|JH556662.1|     2       2       0  7573913
 gi|371440577|gb|JH559283.1|     21      19      2  6931777
Run Code Online (Sandbox Code Playgroud)

File1.txt 有两列,File2.txt 有四列。我想加入两个具有唯一 id 的文件(array[1] 应该在两个文件(file1.txt 和 file2.txt)中匹配,并只给出匹配的 id(参见 output.txt)。

我试过了join -v <(sort file1.txt) <(sort file2.txt)。请求任何有关 awk 或 join 命令的帮助。

awk join

11
推荐指数
2
解决办法
5万
查看次数

根据 column1 连接多行

我有一个像下面这样的文件..

abc, 12345
def, text and nos    
ghi, something else   
jkl, words and numbers

abc, 56345   
def, text and nos   
ghi, something else 
jkl, words and numbers

abc, 15475  
def, text and nos 
ghi, something else
jkl, words and numbers

abc, 123345
def, text and nos
ghi, something else  
jkl, words and numbers
Run Code Online (Sandbox Code Playgroud)

我想将其转换(加入)为:

abc, 12345, 56345, 15475, 123345
def, text and nos, text and nos,text and nos,text and nos
ghi, something else, something else, something else, something else   
jkl, …
Run Code Online (Sandbox Code Playgroud)

command-line awk text-processing merge join

10
推荐指数
1
解决办法
2万
查看次数

使用唯一标识符连接两个文件

我有两个文件,分别包含大约 12900 和 4400 个条目,我想加入。这些文件包含全球所有陆基气象观测站的位置信息。最大的文件每两周更新一次,较小的文件大约一年更新一次。原始文件可以在这里找到(http://www.wmo.int/pages/prog/www/ois/volume-a/vola-home.htmhttp://weather.rap.ucar.edu/surface/站.txt)。我已经使用一些混合的 awk、sed 和 bash 脚本操纵了我拥有的文件。我使用这些文件使用 GEMPAK 包来可视化数据,该包可从 Unidata 免费获得。最大的文件可以与 GEMPAK 一起使用,但不能发挥其全部功能。为此,需要加入。

文件 1 包含气象观测站的位置信息,其中前 6 位数字是唯一的站标识符。不同的参数(站号、站名、国家代码、纬度经度和站高程)仅由其在线路中的位置定义,即没有选项卡。

         060090 AKRABERG FYR                        DN  6138   -666     101
         060100 VAGA FLOGHAVN                       DN  6205   -728      88
         060110 TORSHAVN                            DN  6201   -675      55
         060120 KIRKJA                              DN  6231   -631      55
         060130 KLAKSVIK HELIPORT                   DN  6221   -656      75
         060160 HORNS REV A                         DN  5550    786      21
         060170 HORNS REV B                         DN  5558    761      10
         060190 SILSTRUP                            DN  5691    863       0
         060210 …
Run Code Online (Sandbox Code Playgroud)

awk shell-script text-processing columns join

9
推荐指数
2
解决办法
3658
查看次数

将两个文件与第一列进行比较,并从 shell 脚本中的第二个文件中删除重复的行

我会用一个例子来问我的问题。我有2个文件:

文件#1:

118D FC300_R5_TP  FX.B      32775       2112   6       2038   6       2112   0
118E FC300_R5_TP  FX.B      32775       2136   7       2065   6       2136   0
118F FC300_R5_TP  FX.B      32775       2124   6       2064   6       2124   0
1190 FC300_R5_TP  FX.B     819210     814632  99     814609  99     814632   0
1191 FC300_R5_TP  FX.B     819210     104100  13     103714  13     104100   0
1192 FC300_R5_TP  FX.B    1638420    1609476  98    1609402  98    1609476   0
1196 FC300_R5_TP  FX.B    1638420    1638432 100    1638379 100    1638432   0
119A FC300_R5_TP  FX.B    3276840    3271776 100    3271698 100 …
Run Code Online (Sandbox Code Playgroud)

awk shell-script text-processing join

9
推荐指数
2
解决办法
2万
查看次数

比较旧文件和新文件,但忽略只存在于新文件中的行?

我有两个文件:

  1. oldlist- 这包含文件列表和每个文件的 md5 哈希。这是一年前生成的。
  2. newlist- 这还包含文件列表和每个文件的 md5 哈希值。但是,一些文件已更改(例如,它们的 md5 哈希值不同)并添加了一些新文件。

我想查看oldlist和之间的所有差异newlist,但我想忽略oldlist.

也就是说,我不关心新文件。我只想比较每个旧文件的 md5 哈希值,以便我可以查看去年是否有任何文件发生了更改。

我试过diffcomm,但还没有找到解决方案。

diff text-processing file-comparison join

8
推荐指数
1
解决办法
1850
查看次数

用于连接两个文件的 shell 脚本

我想写一个shell script得到两个文件Aand B,并得到这样的结果:

文件A

user_a tel_a addr_a
user_b tel_b addr_b
Run Code Online (Sandbox Code Playgroud)

文件B

process_1 user_a
process_2 user_a
process_3 user_b
Run Code Online (Sandbox Code Playgroud)

结果:

user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?awk或者是其他东西?

awk text-processing join

8
推荐指数
1
解决办法
5978
查看次数

根据第一列的两个文件的交集

我在文件 A 中有两个文件,另一个文件 B 中有序列号,有很多列,第一列是序列号,我想得到一个文件,其中包含 B 中的所有行,其中的序列号在我怎样才能做到这一点?谢谢

像文件A

1
3
8
9
20
Run Code Online (Sandbox Code Playgroud)

文件B

1 kfjk 3243424
2 fkdkf 23543592
3 iefjk 21493402
7 dlafdl 23435231
8 kfkdlkf 309834
Run Code Online (Sandbox Code Playgroud)

shell scripting text-processing columns join

7
推荐指数
1
解决办法
6207
查看次数

如何在shell中合并具有不同行数的两个文件?

我有这样的file1:

CHR                     SNP     TEST   A1   A2                 GENO   O(HET)   E(HET)            P 
   0         AFFX-SNP-000541      ALL    0    0                0/0/0      nan      nan            1
   0         AFFX-SNP-000541      AFF    0    0                0/0/0      nan      nan           NA
   0         AFFX-SNP-000541    UNAFF    0    0                0/0/0      nan      nan           NA
   0         AFFX-SNP-002255      ALL    0    0                0/0/0      nan      nan            1
   0         AFFX-SNP-002255      AFF    0    0                0/0/0      nan      nan           NA
   0         AFFX-SNP-002255    UNAFF    0    0                0/0/0      nan      nan           NA
   1                 rs12103      ALL    C    T           55/250/317   0.4019   0.4113       0.5596
   1                 rs12103      AFF    C    T                0/0/0      nan …
Run Code Online (Sandbox Code Playgroud)

shell terminal join bioinformatics

7
推荐指数
2
解决办法
4648
查看次数