本文介绍了如何合并奇数行和偶数行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将每个偶数行与其上方的行合并.类似的东西:

I want to combine every even-numbered line with the line above it. Something like:

Line one,csv,csv,csv
Line two,csv,csv
Line three,csv,csv,csv,csv
Line four,csv

结果应该是这样的:

Line one,csv,csv,csv,Line two,csv,csv
Line three,csv,csv,csv,csv,Line four,csv

任何想法如何在 Perl 或 sed/awk 中实现?

Any ideas how to achieve that in either Perl or sed/awk?

推荐答案

Perl 的内置变量 $. 会告诉你行号.$.如果 $. 为奇数,% 2 将为 1,否则为 0.这是一个独立的例子;

Perl's builtin variable $. will tell you the line number. $. % 2 will be 1 if $. is odd, and 0 otherwise. Here is a self-contained example;

#!/usr/bin/perl

use strict; use warnings;

my $buffer;

while (my $line = <DATA>) {
    if ($. % 2) {
        chomp $line;
        $buffer = $line;
    }
    else {
        print join(",", $buffer, $line);
    }
}

__DATA__
Line one,csv,csv,csv
Line two,csv,csv
Line three,csv,csv,csv,csv
Line four,csv

输出:

C:\Temp> tt
Line one,csv,csv,csv,Line two,csv,csv
Line three,csv,csv,csv,csv,Line four,csv

这篇关于如何合并奇数行和偶数行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 20:00