这是一个普遍的问题,当我使用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)