将每第二行转为列

时间:2013-04-18 22:55:44

标签: awk

我正在重新格式化一些以xml开头的丑陋数据以及所有其他垃圾并归结为此,但我无法完成这项工作。

我想转:

    BPSD-41 
    Admin Summary: Page does not finish loading

    BPSD-49 
    Mobile: Activity Section: Does not finish loading

    BPSD-50 
    Fix bug in staging

进入这个:

    BPSD-41 : Admin Summary: Page does not finish loading

    BPSD-49 : Mobile: Activity Section: Does not finish loading

    BPSD-50 : Fix bug in staging

我敢打赌,这是一款非常优雅的awk解决方案,但我找不到它......

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作

BEGIN {
    flag = 0;
}

{
    if (flag == 0) {
        save = $0;
        flag = 1;
    } else {
        printf("%s : %s\n", save, $0);
        flag = 0;
    }
}

请注意,我没有对此进行过测试,但是应该可以使用。

答案 1 :(得分:0)

您可以使用此awk命令加入两行:

awk 'NF>0{printf $0; getline; print $0}' inFile

或者使用sed:

sed -i.bak 'N;s/\n/\;/' inFIle

答案 2 :(得分:0)

这是一个跳过空白行的单行

/[^\r\n]/{ printf("%s%s", $0, i++ % 2 ? "\n" : " : "); }