2012-02-16 87 views
3

刪除新行/換行字符我有以下的輸出:只對特定的線路

02:01:31 
OFFLINE 
02:02:31 
ONLINE 

,我想它成爲:

02:01:31 OFFLINE 
02:02:31 ONLINE 

我發現刪除所有換行符的方法/ linebreak與sed ':a;N;$!ba;s/\n/ /g'然而它給了我後面哪些不是真的我在之後:

02:01:31 OFFLINE 02:02:31 ONLINE 

問:如何僅刪除符合特定格式的行的新行/換行符(在這種情況下,[0-9]就足夠了?

PS:這並不一定與sed只要我可以申請一個正則表達式模式,以線

回答

4

的匹配使您s/\n/ /gs/\([0-9]\S*\)\n/\1 /g(數字,後面接着的非空白的任何量之後換行)。

+0

的''所屬的組內,不被外部:'([0-9] \ S *)' – 2012-02-16 08:52:12

+0

糟糕。感謝您的錯字捕捉。 – Amber 2012-02-16 08:52:38

+0

工作雖然我不得不逃避括號使分組工作:'s/\([0-9] \ S * \)\ n/\ 1/g' – Max 2012-02-16 15:38:00

1

AWK oneliner:

awk '/[0-9]$/{printf $0" ";next;}1' 

測試:

kent$ echo "02:01:31 
OFFLINE 
02:02:31 
ONLINE"|awk '/[0-9]$/{printf $0" ";next;}1' 
02:01:31 OFFLINE 
02:02:31 ONLINE