$> echo 'abc' | sed 's/b/\n/' anc
不,不是的
$> echo 'abc' | sed 's/b/\\n/' a\nc
不,那也不是。 我想要的输出是
a c
帮帮我!
看起来像你在BSD或Solaris上。 尝试这个:
[jaypal:~/Temp] echo 'abc' | sed 's/b/\ > /' a c
添加一个黑色的斜线,然后回车并完成您的sed
语句。
你没有说你想全球取代所有b 。 如果是,你需要tr
代替:
$ echo abcbd | tr b $'\n' a c d
适用于Solaris 5.8和bash 2.03
$ echo 'abc' | sed 's/b/\'$'\n''/' a c
在Bash中, $'\n'
扩展为单引号换行符(参见man bash
“QUOTING”部分)。 这三个字符串在被传递给sed作为参数之前被连接起来。 Sed要求换行符被转义,因此我粘贴的代码中的第一个反斜杠。
echo 'abc' | sed 's/b/\'\n'/'
你错过了围绕\n
在一个多行文件中,我必须通过sed两端的tr来传递,如下所示:
echo "$FILE_CONTENTS" | \ tr '\n' ¥ | tr ' ' ∑ | mySedFunction $1 | tr ¥ '\n' | tr ∑ ' '
看到unix喜欢删除换行符和额外的领先空间以及各种各样的东西,因为我想这似乎是在20世纪初的时候要做的事情。 无论如何,我上面显示的这个方法解决了100%的问题。 希望我能看到有人把这个帖子发到某个地方,因为这会为我节省大约三个小时的生命。