python - 按条件合并具有不同列信息的文件

标签 python perl unix sed awk

我有三个文件,每个文件中的信息都不会以任何方式重叠 - 但是,它们需要以特定方式相互合并才能发挥作用。

第一个文件不同于以相同方式设置的后两个文件。 文件 1 如下所示:

rs101   12  126890980   A   G   
rs102   4   114553253   A   C   
rs103   9   172776204   C   T

文件 2 如下所示:

1   178 0.12    0.26    0.02    
1   1458    0.35    0.37    0.021   
1   318 0.99    0.105   0.08

文件 3 如下所示:

 1  3567    0.78    0.67    0.005   
 0  0   0   0   0   
 1  3567    0.34    -0.15   0.001 

我想要一个将这些合并到文件以生成第三个文件的脚本:

rs101   12  126890980   A   G
1   178 0.12    0.26    0.02
1   3567    0.78    0.67    0.005
rs102   4   114553253   A   C   
1   1458    0.35    0.37    0.02
0   0   0   0   0
rs103   9   172776204   C   T
1   318 0.99    0.105   0.08
1   3567    0.34    -0.15   0.001 

问题是,如果这些文件合并不正确,它们在运行分析时将不会提供正确的信息 - 我可以在每个文件的末尾添加一个唯一的列(例如,rs# 可以在文件中打印两次一个(在第一列中一次,在最后一列中一次),然后可以将相应的 rs 编号添加到文件 2 和 3 末尾的另一列中)。然后我可以手动抽查合并是否正确发生。任何见解或建议表示赞赏!

最佳答案

一种方法,使用粘贴:

paste -d "\n" file1.txt file2.txt file3.txt

结果:

rs101   12  126890980   A   G   
1   178 0.12    0.26    0.02    
1  3567    0.78    0.67    0.005   
rs102   4   114553253   A   C   
1   1458    0.35    0.37    0.021   
0  0   0   0   0   
rs103   9   172776204   C   T
1   318 0.99    0.105   0.08
1  3567    0.34    -0.15   0.001

这假设您的每个输入文件都包含相同数量的行。要检查每个文件(从而避免潜在的合并问题),请使用 wc:

wc -l file1.txt file2.txt file3.txt

结果:

3 file1.txt
3 file2.txt
3 file3.txt
9 total

HTH

关于python - 按条件合并具有不同列信息的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513001/

相关文章:

python - 多选下拉菜单 Bokeh

perl - 为什么perl对象实例会互相覆盖

perl - 为什么 !1 在 Perl 中没有给我任何结果?

python - Python 是否有正则表达式的最大组引用(如 Perl)?

python - Django(grappelli): how add my own css to all the pages or how to extend admin's base. html?

python - 使用 Pandas 按组获取计数

python - 如何在 python3 中有效地将位从一个字节数组打包到另一个字节数组?

linux - 查看由数字表示的文件的特定行

java - 如何通过 SSH 客户端查看可运行 .jar 的输出

shell - Bourne Shell 中是否有像 Bash 中那样的进程替换?