sed 在 OS X 中用换行符替换空格

sed to replace blanks with newlines in OS X

我想用文件中的换行符替换空格。我从这里其他问题的答案中尝试的其他一些事情都没有用:

sed -e 's/\s\+/\n/g' file 
sed -e 's/[[:blank:]]\+/\n/g' file

这些都是 return 文件的原样。我尝试了以下方法:

sed -e 's/[[:blank:]]/\n/g' file

ns 替换空格。

我认为差异是由于 gnu sed 和 OS X 中的差异造成的。我如何在 OS X 中实现这一点?

sed on OS X 无法识别替换中的 \n,您需要使用文字换行符,并且必须将其转义以防止其结束命令。它也不理解 \s+,因此使用 [[:blank:]]\{1,} 来匹配一个或多个空格。

sed -e 's/[[:blank:]]+/\
/g' file

诀窍是插入一个新行(实际上是一个新行)。

$ echo 'this will replace blanks with new lines' | sed 's/ /\
/g'

tr 命令是 easier/more-suitable IMO:

tr ' ' '\n' < $FILE_PATH

或:

echo 'this will replace blanks with new lines' | tr ' ' '\n'