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

前端之家收集整理的这篇文章主要介绍了shell – 使用sed从传入流中删除新的行字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是新的shell脚本,我正在尝试使用SED从每行删除新的行字符。这是我迄今为止所做的:
printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g'

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

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'

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

删除换行符,请使用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。

猜你在找的Bash相关文章