我是新来的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'
然后它给正确的输出,但我在寻找更好的东西,因为我不知道有多少新的角色,当我运行该脚本,我会得到。 进入流是从回声或printf或者在脚本一些变量。 提前致谢
要删除换行符,使用TR:
tr -d '\n'
如果你想用一个空格来代替每个换行:
tr '\n' ' '
错误ba: Event not found
从CSH来了,是由于CSH试图匹配!ba
在历史记录中。 你可以逃脱!
写命令:
sed ':a;N;$\!ba;s/\n/ /g' # Suitable for csh only!!
但sed的是这个错误的工具,你会使用更合理的处理带引号的字符串壳会更好。 也就是说,停止使用csh,并开始使用bash。
这可能会为你工作:
printf "{new\nto\nlinux}" | paste -sd' '
{new to linux}
要么:
printf "{new\nto\nlinux}" | tr '\n' ' '
{new to linux}
要么:
printf "{new\nto\nlinux}" |sed -e ':a' -e '$!{' -e 'N' -e 'ba' -e '}' -e 's/\n/ /g'
{new to linux}