粘贴两个文件

时间:2016-05-04 18:38:16

标签: unix paste

我有两个这种格式的大文件(fastq): 文件1:

@f.1 A:B:C:D:E:F:1 length=20
NTCCANAAAAGCAGTGGTAT
+f.1 A:B:C:D:E:F:1 length=20
#AAAA#FF<FFFFFFFAF<F
@f.1 A:B:C:D:E:F:2 length=20
NACAANCACCCAGGGGAGAG
+f.1 A:B:C:D:E:F:2 length=20
#7AAA#FFFFFAFFFF<<FF

文件2:

@f.2 A:B:C:D:E:F:1 length=60
NCGTTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+f.2 A:B:C:D:E:F:1 length=60
#.A..F######################################################
@f.2 A:B:C:D:E:F:2 length=60
NGCCTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+f.2 A:B:C:D:E:F:2 length=60
#<AAA<######################################################

我想将文件1中的每个偶数行号(行2,4,6,...)与文件2中每个对应的偶数行号粘贴在一起。 奇数行可以保留为文件2的数字(I&#39; ll随后更改长度值以反映更新的长度,在此示例的情况下为80.)

所以我的结果文件是:

    @f.1 A:B:C:D:E:F:1 length=80
 NTCCANAAAAGCAGTGGTATNCGTTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
    +f.1 A:B:C:D:E:F:1 length=80
 #AAAA#FF<FFFFFFFAF<F#.A..F######################################################
    @f.1 A:B:C:D:E:F:2 length=80
 NACAANCACCCAGGGGAGAGNGCCTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
    +f.1 A:B:C:D:E:F:2 length=80
 #7AAA#FFFFFAFFFF<<FF#<AAA<######################################################

1 个答案:

答案 0 :(得分:1)

嗯,paste是一个很好的方法。只需粘贴所有行,然后纠正奇数行。根据您的示例,我在此处进行的更正是一个简单的sed。 YMMV如果您的示例中没有显示其他变量:

$ paste -d '\0' file1 file2 | sed 's/ length=20.*$/ length=80/g'
@f.1 A:B:C:D:E:F:1 length=80
NTCCANAAAAGCAGTGGTATNCGTTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+f.1 A:B:C:D:E:F:1 length=80
#AAAA#FF<FFFFFFFAF<F#.A..F######################################################
@f.1 A:B:C:D:E:F:2 length=80
NACAANCACCCAGGGGAGAGNGCCTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+f.1 A:B:C:D:E:F:2 length=80
#7AAA#FFFFFAFFFF<<FF#<AAA<######################################################