我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:
sed 's/,/\n/g' file
但这并不奏效。我错过了什么?
我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:
sed 's/,/\n/g' file
但这并不奏效。我错过了什么?
当前回答
请改用tr:
tr , '\n' < file
其他回答
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。
为了使它完整,也可以这样做:
echo "a,b" | sed "s/,/\\$(echo -e '\n\r')/"
FWIW,下面的行工作在窗口和替换分号在我的路径变量换行。我正在使用安装在我的git bin目录下的工具。
echo %path% | sed -e $'s/;/\\n/g' | less
sed 's/,/\
/g'
适用于Mac OS X。
虽然我写这篇文章晚了,只是更新我的发现。这个答案只适用于Mac OS X。
$ sed 's/new/
> /g' m1.json > m2.json
sed: 1: "s/new/
/g": unescaped newline inside substitute pattern
在上面的命令中,我尝试用Shift+Enter添加新行,但没有工作。所以这一次我尝试了“转义”的“未转义换行”,因为错误告诉。
$ sed 's/new/\
> /g' m1.json > m2.json
成功了!(适用于Mac OS X 10.9.3)