粘贴两个文件对应的所有偶数行号

Paste all corresponding even line numbers of two files

我有两个这种格式的大文件 (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 的奇数行号可以保留(我随后会更改长度值以反映更新后的长度,在本例中为 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<######################################################

嗯,paste 是一个很好的方法。只需粘贴所有行,然后更正奇数行。根据你的例子,我在这里的更正是一个简单的sed。 YMMV 如果您的示例中未显示其他变量在起作用:

$ paste -d '[=10=]' 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<######################################################