我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:
sed 's/,/\n/g' file
但这并不奏效。我错过了什么?
我有一个用逗号分隔的字符串文件。我正试着用新的一行替换逗号。我试过了:
sed 's/,/\n/g' 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。
请改用tr:
tr , '\n' < file
如果sed的使用倾向于完全使用替换表达式(就像我的一样),您也可以使用perl -pe来代替
$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz
MacOS是不同的,有两种方法来解决这个问题与mac的sed
首先,使用\'$'\n "替换\n,它可以在MacOS中工作: Sed 's/,/\'$'\n " /g'文件 第二,使用空行: sed的s /, / \ / g的文件 Ps.注意用'分隔的范围 第三,使用gnu-sed代替mac-sed