【发布时间】:2013-05-10 01:13:12
【问题描述】:
我查看了一个非常相似的问题,但无法解决问题Replace comma with newline in sed
我正在尝试将: 字符转换为字符串。这是我尝试过的:
echo -e 'this:is:a:test' | sed "s/\:/'\n'/g"
但这会用 n 代替 :。我也尝试了 tr 但结果相同。我相信管道后看不到 -e ,因此无法识别新行。
感谢任何帮助。
【问题讨论】:
-
你在什么系统上?您的命令管道在 RHEL 上适用于我
-
GNU
sed似乎将\n处理为换行符(在更简单的sed 's/:/\n/g'中也是如此;BSDsed不会。 -
是的,对我来说仍然有相同的输出:更改为 n。这工作很奇怪 echo -e ${PATH//:/'\n'} 我真的不明白为什么。
-
echo 中不需要 -e,这是为了在 echo 语句的输出中扩展元字符,而不是 sed 的输出。您应该能够在 sed 中包含换行符而无需任何转义或引用:echo 'this:is:a:test' | sed "s/:/\n/g" 应该可以工作。如果没有,请执行 sed --version 和 echo $SHELL 让我们知道您的环境是什么样的。
-
嗨 echo $SHELL 给了我 /bin/tcsh。但是 sed --version 或 sed -v 不起作用表示未知标志。我跑了 pkginfo -l SUNWcsu 它说 11.10.0