2014年6月5日星期四

Mac OS X 中 sed 换行符

在Mac OS X 中使用sed遇到一个无法替换换行的问题,在Linux下,下面的命令效果是很明显的,完全没有问题

$ echo "123 345 678 789" | sed 's/ /\n/g'
123
345
678
789

但是在Mac OS X中,上面的命令是无法正常的,结果如下
$ echo "123 345 678 789" | sed 's/ /\n/g'
123n345n678n789

究其原因就是Max OS X上的sed是BSD的版本,Linux上的是Gnu的版本,导致的不一致。

怎样解决这个问题呢

第一就是使用tr,这样也能得到期望的结果
$ echo "123 345 678 789" | tr ' ' '\n'

第二就是使用BSD版本的写法。
$ echo "123 345 678 789" | sed -e 's/ /\'$'\n/g'
123
345
678
789


没有评论:

发表评论