我正在尝试使用awk或sed将所有偶数行中的文本添加到所有奇数行的末尾,同时保持偶数行不变。
例如,我有:
>1
AAAA
>2
BBBB
>3
CCCC
我需要一个看起来像这样的新文件:
>1:AAAA
AAAA
>2:BBBB
BBBB
>3:CCCC
CCCC
结肠是任意的,但对于我需要的东西可以正常工作。文件很大(约3,000,000,000行!)所以它需要很快。不确定awk或sed是否会更好以及如何做到这一点。
答案 0 :(得分:1)
awk
救援!
$ awk -v OFS=: '!(NR%2){print p OFS $0; print} {p=$0}' file
>1:AAAA
AAAA
>2:BBBB
BBBB
>3:CCCC
CCCC
将OFS设置为所需的分隔符。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -r 'N;s/\n(.*)/:\1&/' file
将奇数行添加到偶数行,并使用模式匹配格式化输出。
答案 2 :(得分:0)
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