【问题标题】:\n is not working on the MacOS shell with sed [duplicate]\n 不能在 sed 的 MacOS shell 上工作 [重复]
【发布时间】:2019-06-08 09:21:58
【问题描述】:

也许这是一个愚蠢的问题,但我真的无法解决这个问题。

我只想用这段代码用新行替换每个空格。

echo "300.000" | sed 's/[.:;,"]/ & /g' | sed 's/ /\n/g'

但是结果是这样的:

300n.n000

我的同事说这应该可行。如果这有什么不同,我在 Mac 上?

【问题讨论】:

标签: linux shell sed newline


【解决方案1】:

很遗憾,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'

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 2013-08-21
    • 2021-12-20
    • 2012-05-17
    • 1970-01-01
    • 2021-01-16
    • 2015-10-07
    相关资源
    最近更新 更多