Awk 将第二行变成第二列

Awk 将第二行变成第二列,awk,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 : Adm

我正在重新格式化一些丑陋的数据,这些数据最初是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解决方案,但我找不到它…

您可以执行以下操作

BEGIN {
    flag = 0;
}

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

请注意,我还没有测试过这一点,但一些相近的东西应该可以工作。

您可以使用此awk命令连接两行:

awk 'NF>0{printf $0; getline; print $0}' inFile
或使用sed:

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

这是一条跳过空白行的单行线

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

在vim中,您可以一次性执行以下操作:
:%s/\([0-9]\)\n/\1:/g
先生,您是一位学者和绅士。
BPSD-2:在摘要页面上复制本地消费区的更改:BPSD-7在管理门户中创建事务时出错:BPSD-3:测试主页:更改联系人电话号码:BPSD-4
Alex,我不明白这个评论。