Awk 将偶数行添加到奇数行;保持偶数行不变

Awk 将偶数行添加到奇数行;保持偶数行不变,awk,sed,Awk,Sed,我试图使用awk或sed将所有偶数行的文本添加到所有奇数行的末尾,同时保持偶数行的原样 例如,我有: >1 AAAA >2 BBBB >3 CCCC 我需要一个新文件,如下所示: >1:AAAA AAAA >2:BBBB BBBB >3:CCCC CCCC 冒号是任意的,但对于我所需要的,它可以正常工作。文件非常大(约3000000000行!),因此需要加快速度。不确定awk或sed是否更好,以及如何做 cat sample.csv

我试图使用awk或sed将所有偶数行的文本添加到所有奇数行的末尾,同时保持偶数行的原样

例如,我有:

>1
AAAA
>2
BBBB
>3
CCCC
我需要一个新文件,如下所示:

>1:AAAA
AAAA
>2:BBBB
BBBB
>3:CCCC
CCCC
冒号是任意的,但对于我所需要的,它可以正常工作。文件非常大(约3000000000行!),因此需要加快速度。不确定awk或sed是否更好,以及如何做

cat sample.csv                                                                                                                                                                    
>1
AAAA
>2
BBBB
>3
CCCC
以下是awk脚本: 如果是奇数行,将值存储到数组中,当遇到下一个偶数行时,打印格式化的行

cat test.awk                                                                                                                                                                      
{
    if(NR %2 != 0){
        a[NR] = $0
    }else{
        print a[NR -1] ":" $0 "\n" $0
    }
}
运行它并显示结果:

awk -f test.awk  sample.csv                                                                                                                                                       
>1:AAAA
AAAA
>2:BBBB
BBBB
>3:CCCC
CCCC

awk
救援

$ awk -v OFS=: '!(NR%2){print p OFS $0; print} {p=$0}' file

>1:AAAA
AAAA
>2:BBBB
BBBB
>3:CCCC
CCCC
将OFS设置为所需的分隔符。

这可能适用于您(GNU-sed):


将奇数行附加到偶数行,并使用模式匹配格式输出。

您已经尝试了什么?做得好。我喜欢使用两种反向引用方法,我通常将一种样式与另一种样式分开。
sed -r 'N;s/\n(.*)/:\1&/' file