2

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 s 和 6.9 m 有一个空格,因此只能用我们提供的值替换,sed而其他人不能。

怎么做到呢?

4

1 回答 1

3

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

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

用第一个非空格、一个逗号和第二个非空格替换一个非空格,然后是一个空格,然后是另一个非空格。对行中的每个空白重复此操作。

于 2013-05-10T06:04:54.490 回答