2013-04-18 25 views
1

我正在重新格式化一些以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的解決方案,但我不能找到它...

+1

對於一次性,在vim中你可以這樣做:':%s/\([0-9] \)\ n/\ 1:/ g' –

+0

先生,您是一位學者和紳士。 –

回答

0

您可以執行以下操作

BEGIN { 
    flag = 0; 
} 

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

請注意,我沒有測試過這個,但是應該關閉一些東西。

+0

'BPSD-2 \t:複製變更爲 摘要頁面上的本地消費莢:\t BPSD-7 \t 錯誤創建在管理門戶網站的交易: \t BPSD-3 \t:測試主頁:更換聯繫電話號碼 :\t BPSD -4 \t' –

+0

亞歷克斯,我不明白評論。 –

0

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

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

或使用SED:

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

這裏是一個一行是跳過空白行

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