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

时间:2015-05-25 19:40:31

标签: regex bash sed osx-yosemite

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

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

这两者都按原样返回文件。我尝试了以下方法:

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

n s替换空格。

我认为差异是由于gnu sed与OS X中的差异造成的。我怎样才能在OS X中实现这一点?

3 个答案:

答案 0 :(得分:1)

OS X上的

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

tr命令更容易/更适合IMO:

tr ' ' '\n' < $FILE_PATH

或:

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