也许这是一个愚蠢的问题,但我真的无法解决。
我只想用此代码用换行替换每个空格。
echo "300.000" | sed 's/[.:;,"]/ & /g' | sed 's/ /\n/g'
但是结果是这样的:
300n.n000
我的同事说这应该工作。我在Mac上有什么区别吗?
答案 0 :(得分:0)
不幸的是,sed
中的换行符并未完全标准化。在MacOS上,可以进行以下操作:
echo "300.000" | sed 's/[.:;,"]/\
&\
/g'
(是的,这些是单引号内的文字反斜杠换行符。)
在\n
工作的那些平台上,您可以简化为
echo "300.000" | sed 's/[.:;,"]/\n&\n/g'
如果要替换所有空格,tr
是可移植的解决方案:
echo "300.000" | sed 's/[.:;,"]/ & /g' | tr ' ' '\012'
一个更简洁的解决方案可能是使用Perl,它不是完全标准化的 ,而仅存在于单个实现中,因此无论安装了Perl的哪个地方都可以有效地移植:
echo "300.000" | perl -pe 's/[.:;,"]/\n$&\n/g'