\n 在 MaxOSX 中使用 sed 时打印 n 而不是换行符

Cha*_*lie 6 sed newlines

这是一个普遍的问题,当我使用sed,但是\n当我以外使用它的工作原理sed。这是我得到的一个例子sed

我有myfile包含以下内容的文件:

1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

当我使用这个时:

sed 's/ /\n/g' myfile
Run Code Online (Sandbox Code Playgroud)

我明白了:

1n2n3n4n5
Run Code Online (Sandbox Code Playgroud)

而不是得到这个:

1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

有人知道问题出在哪里吗?

cuo*_*glm 6

您正在使用OSX 10.8,所以您的sed工具是FreeBSD sed,而不是GNU sed。所以FreeBSD sed不解释\n为换行符。

你可以试试:

$ sed 's/ /\'$'\n/g' myfile
Run Code Online (Sandbox Code Playgroud)

$'\n/g'导致bash将字符串解释为标准转义扩展,因此\nsed处理之前转换为换行符。

或使用tr代替sed

$ tr -s ' ' '\n' < myfile
Run Code Online (Sandbox Code Playgroud)