【发布时间】:2012-05-24 00:44:38
【问题描述】:
我是 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 或脚本中的某个变量。 提前致谢
【问题讨论】:
-
“ba:Event not found”错误来自您的 shell。停止使用 csh,或转义 !。
-
@WilliamPursell 我只需要使用 csh,没有其他选项可供我使用。根据您的建议,我放弃了! "printf "{new\nto\nlinux}" | sed ':a;N;$ba;s/\n/ /g'" 这个命令也没有给出正确的结果..我知道使用有很多缺点csh 但由于某些强迫性而不得不使用它:( ..thanks
-
你不能删除'!',但你需要在它前面加上一个反斜杠。
-
再次感谢这似乎也有效
-
“在某处找到”很可能是 stackoverflow.com/a/1252191/512360 - 请参阅那里以了解其工作原理。