shell – 使用sed从传入流中删除新的行字符

我是新的shell脚本,我正在尝试使用SED从每行删除新的行字符。这是我迄今为止所做的:
printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g'

删除Ist新行字符。
我在某处找到这个命令:

printf "{new\nto\nlinux}" | sed ':a;N;$!ba;s/\n/ /g'

但它给出:“ba:事件未找到”。

如果我做:

printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g' | sed ':a;N;s/\n/ /g'

那么它会提供正确的输出,但我正在寻找更好的东西,因为我不知道我会运行脚本时会获得多少新角色。
传入流是来自echo或printf或脚本中的一些变量。
提前致谢

删除换行符,请使用tr:
tr -d '\n'

如果要用单个空格替换每个换行符:

tr '\n' ' '

错误ba:未找到事件来自csh,并且是由于csh尝试在历史列表中匹配!ba。你可以逃脱!并写命令:

sed ':a;N;$\!ba;s/\n/ /g'  # Suitable for csh only!!

但是sed是错误的工具,您将更好地使用更合理地处理引用的字符串的shell。也就是说,停止使用csh并开始使用bash。

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...