Awk 将偶数行添加到奇数行;保持偶数行不变
我试图使用awk或sed将所有偶数行的文本添加到所有奇数行的末尾,同时保持偶数行的原样 例如,我有: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
>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