spr*_*aff 22 unix bash solaris escaping sed
以下是我尝试在运行时b使用换行符替换字符的尝试sedbash
$> echo 'abc' | sed 's/b/\n/'
anc
Run Code Online (Sandbox Code Playgroud)
不,那不是它
$> echo 'abc' | sed 's/b/\\n/'
a\nc
Run Code Online (Sandbox Code Playgroud)
不,那也不是.我想要的输出是
a
c
Run Code Online (Sandbox Code Playgroud)
救命!
jay*_*ngh 15
看起来你在BSD或Solaris上.试试这个:
[jaypal:~/Temp] echo 'abc' | sed 's/b/\
> /'
a
c
Run Code Online (Sandbox Code Playgroud)
添加黑色斜杠并按Enter键并完成您的sed声明.
$ echo 'abc' | sed 's/b/\'$'\n''/'
a
c
Run Code Online (Sandbox Code Playgroud)
在 Bash 中,$'\n'扩展为单引号换行符(请参阅 的“QUOTING”部分man bash)。这三个字符串在作为参数传递到 sed 之前被连接起来。Sed 要求对换行符进行转义,因此是我粘贴的代码中的第一个反斜杠。
您没有说要全局替换所有b. 如果是,你想要tr:
$ echo abcbd | tr b $'\n'
a
c
d
Run Code Online (Sandbox Code Playgroud)
在 Solaris 5.8 和 bash 2.03 上对我有用