Shell 在不接触多个空间的情况下使用sed替换单个空间
使用Shell 在不接触多个空间的情况下使用sed替换单个空间,shell,sed,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
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
中给出的值替换,但其他值不能
如何做到这一点?这似乎是一件有趣的事情,但这应该做到你所说的你想做的:
sed 's/\([^ ]\) \([^ ]\)/\1,\2/g'
用第一个非空白、逗号和第二个非空白替换一个非空白后接一个空白后接另一个非空白。对行中的每一个空格重复。Jonathan Leffler@非常感谢我不知道我怎么忘了这个……我按照我的要求做了一些小的改变。删除“”,并保持原样。sed的/([^])([^])/\1\2/g'非常感谢
sed-e的/\b\b/,/g'
应该可以做得很好\b
是单词边界一对注意事项:(1)一些版本的sed
支持\b
符号;其他人则没有(GNUsed
有,并且使用非常广泛)。(2) 用逗号代替单个空格更有意义,如果您想确保将数字(数字)与其单位组合(而不是同时运行两个单词),可以调整字符类(s/\([0-9\.]\)\([a-zA-Z]\)/\1/2/
等)。