用sed替换单个空间而不触及多个空格

时间:2013-05-10 05:59:06

标签: shell sed

使用sed替换单个空格而不触及多个空格的序列。

我的文件看起来像这样:

Host/Domain Summary: Message Delivery
 sent cnt  bytes   defers   avg dly max dly host/domain

 -------- -------  -------  ------- ------- -----------
    937     3293k       0    18.6 s    6.9 m  theory.tifr.res.in

    462     3740k       0     7.3 s    9.5 m  ncra.tifr.res.in

    286     1053k       4    20.4 s    1.3 h  gmail.com

问题:

我想用逗号替换单个空格或没有空格但不触及其他空格。我已经使用sed尝试了它,但它直接占用所有空格并用逗号替换它们。

示例:18.6秒和6.9米有单个空格,因此只能替换我们在sed中提供的值,但其他人不能。

怎么做?

1 个答案:

答案 0 :(得分:3)

这似乎是一件有趣的事情,但这应该做你想说的事情:

sed 's/\([^ ]\) \([^ ]\)/\1,\2/g'

替换非空白后跟空白,后跟另一个非空白,第一个非空白,逗号,第二个非空白。对该行中的每个空白重复。