Sed 在同一文本文件中按不同块的顺序连接行

Sed 在同一文本文件中按不同块的顺序连接行,sed,awk,Sed,Awk,我将一个文件拆分为如下所示的块: AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTGGGG AGGTAGTTATTATTTTTTTGGTTTTTAGTATTTAATTGAGTGTTT ATGTAGGTGTTTATGTATTAGTTTTTTTTAGGTTTAGGGTGTTGT ATTTAGGTTTTGTGTTTTGTGTATTATTGAATTTAATTAAAGTTA AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTT AG

我将一个文件拆分为如下所示的块:

AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTGGGG
AGGTAGTTATTATTTTTTTGGTTTTTAGTATTTAATTGAGTGTTT
ATGTAGGTGTTTATGTATTAGTTTTTTTTAGGTTTAGGGTGTTGT
ATTTAGGTTTTGTGTTTTGTGTATTATTGAATTTAATTAAAGTTA

AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTT
AGTTTTTTTTTATTTGTCGGGATATTTTAGTTGATTTTAGATTGC
TATATTTTTAGTTTCGATTCGTCGTAAGTTTTATTTTTTTTTAAT
GGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTTT
为了清晰起见,我已经截断/包装了这些行,但请想象一下非常长的行。我的问题是,我想要一个最终文件,看起来像这样:

AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTGGGGAGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTT
AGGTAGTTATTATTTTTTTGGTTTTTAGTATTTAATTGAGTGTTTAGTTTTTTTTTATTTGTCGGGATATTTTAGTTGATTTTAGATTGC
ATGTAGGTGTTTATGTATTAGTTTTTTTTAGGTTTAGGGTGTTGTTATATTTTTAGTTTCGATTCGTCGTAAGTTTTATTTTTTTTTAAT
ATTTAGGTTTTGTGTTTTGTGTATTATTGAATTTAATTAAAGTTAGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTTT
其中,该新区块具有:

  • 与初始块的行数相同
  • 结果块的每一行都是初始块中具有相同行号的行的串联
  • 这种连接应按顺序进行(即“第一块的第一行”+“第二块的第一行”等)
  • 是否可以使用
    sed
    和/或
    awk
    实现此最终块,您能告诉我如何实现吗?

    尝试以下方法:

     awk -vOFS="" '$0{a[NR]=$0}END{for(i=1;i<=NR/2;i++)print a[i],a[i+5]}' file
    

    awk-vOFS=”“'$0{a[NR]=$0}END{for(i=1;i在
    bash
    中使用
    粘贴

    $ paste <(head -4 file) <(tail -4 file) | tr -d '\t'
    AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTGGGGAGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTT
    AGGTAGTTATTATTTTTTTGGTTTTTAGTATTTAATTGAGTGTTTAGTTTTTTTTTATTTGTCGGGATATTTTAGTTGATTTTAGATTGC
    ATGTAGGTGTTTATGTATTAGTTTTTTTTAGGTTTAGGGTGTTGTTATATTTTTAGTTTCGATTCGTCGTAAGTTTTATTTTTTTTTAAT
    ATTTAGGTTTTGTGTTTTGTGTATTATTGAATTTAATTAAAGTTAGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTTT
    

    $paste
    awk-F'\n'-v RS='{for(i=1;我只是想知道它是否可以用sed/awk来完成,或者它是如何完成的?对不起,我更改了if for how.:(如果文件超过4行怎么办?(他没有说可以,但是为了完整起见,可以使用
    wc-l
    甚至
    cat
    )@Oerd我想你的意思是,如果每个块有4行以上的话……如果是这样的话,很明显要将
    head
    tail
    读取的行数增加到块中的行数。是的,这就是我的意思。可能是为了他的命令行foo级别而考虑过这一行了
    $ paste <(head -4 file) <(tail -4 file) | tr -d '\t'
    AGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTGGGGAGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTT
    AGGTAGTTATTATTTTTTTGGTTTTTAGTATTTAATTGAGTGTTTAGTTTTTTTTTATTTGTCGGGATATTTTAGTTGATTTTAGATTGC
    ATGTAGGTGTTTATGTATTAGTTTTTTTTAGGTTTAGGGTGTTGTTATATTTTTAGTTTCGATTCGTCGTAAGTTTTATTTTTTTTTAAT
    ATTTAGGTTTTGTGTTTTGTGTATTATTGAATTTAATTAAAGTTAGGATAGGTTTTGGTGTTTGAGGTTAATTTTGTTTTATTTTTTTTT
    
    awk -F'\n' -v RS= '{for (i=1;i<=NF;i++) {str[i] = str[i] $i} END {for (i=1;i<=NF;i++) print str[i]}' file