我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:

sed 's/,/\n/g' file

但这并不奏效。我错过了什么?


当前回答

这适用于MacOS Mountain Lion (10.8), Solaris 10 (SunOS 5.10)和RHE Linux (Red Hat Enterprise Linux Server release 5.3, Tikanga)……

$ sed 's/{pattern}/\^J/g' foo.txt > foo2.txt

... 这里的^J是通过ctrl+v+ J完成的。注意^J前面的\。

另外,我知道RHEL的sed是GNU的,MacOS的sed是基于FreeBSD的,虽然我不确定Solaris的sed,但我相信这对任何sed都适用。YMMV tho”……

其他回答

sed 's/,/\
/g'

适用于Mac OS X。

请改用tr:

tr , '\n' < file

FWIW,下面的行工作在窗口和替换分号在我的路径变量换行。我正在使用安装在我的git bin目录下的工具。

echo %path% | sed -e $'s/;/\\n/g' | less

我发现了另一个同样有效的命令。

find your_filename.txt -type f -exec sed -i 's/,/\n/g' {} \;

macOS Mojave上的sed于2005年发布,因此一种解决方案是安装gnu-sed,

brew install gnu-sed

然后使用gsed就可以了,

gsed 's/,/\n/g' file

如果你更喜欢sed,只需sudo sh -c 'echo /usr/local/opt/gnu-sed/libexec/gnubin > /etc/paths.D /brew',由brew info gnu-sed推荐。重新启动term,然后命令行中的sed为gsed。