2012-02-16 47 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