这是一个普遍的问题,当我使用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)
有人知道问题出在哪里吗?
您正在使用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
将字符串解释为标准转义扩展,因此\n
在sed
处理之前转换为换行符。
或使用tr
代替sed
:
$ tr -s ' ' '\n' < myfile
Run Code Online (Sandbox Code Playgroud)