Ich bin neu, Shell Scripting und ich versuche, neue Zeile Zeichen aus jeder Zeile mit SED zu entfernen. Dies ist, was ich bisher getan habe:entfernen neue Zeile Zeichen aus eingehenden Stream mit sed
printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g'
entfernt nur Ist neue Zeile Zeichen. fand ich irgendwo diesen Befehl ein:
printf "{new\nto\nlinux}" | sed ':a;N;$!ba;s/\n/ /g'
aber es gibt: "ba:. Ereignis nicht gefunden"
, wenn ich tun:
printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g' | sed ':a;N;s/\n/ /g'
dann gibt es eine korrekte Ausgabe, aber ich bin auf der Suche nach etwas besser, wie ich bin nicht sicher, wie viele neue Charakter, den ich bekommen, wenn ich das Skript ausführen. Der eingehende Stream stammt von echo oder printf oder einer Variablen im Skript. Vielen Dank im Voraus
Die 'ba: Event nicht gefunden' Fehler von Shell ist. Hör auf, csh zu benutzen, oder entkomme dem!. –
@WilliamPursell Ich muss csh nur keine anderen Optionen für mich verwenden.auf Ihren Vorschlag habe ich fallen gelassen! "printf" {new \ nto \ nlinux} "| sed ': a; N; $ ba; s/\ n// g'" auch dieser Befehl gibt nicht das richtige Ergebnis .. ich weiß, dass es viele Nachteile der Verwendung gibt csh, aber muss es aufgrund einiger Zwang verwenden :(..thanks –
Sie können nicht entfernen das '!', aber Sie müssen es mit einem Backslash vorangehen. –