Leerzeichen zu stdout hinzufügen

8

Ist es möglich, links von jeder Ausgabe Leerzeichen an stdout (und stderr wenn möglich) hinzuzufügen, wenn ich Befehle in einem Bash-Shell-Skript ausführe?

Ich möchte etwas tun wie:

%Vor%

Irgendeine Idee?

BEARBEITEN: Dem Befehl echo wurden Anführungszeichen hinzugefügt, andernfalls werden sie nicht aufgefüllt.

    
kolrie 20.07.2010, 02:42
quelle

6 Antworten

10

Ja, Sie können sie für einfache Dinge zitieren:

%Vor%

und pipe die Ausgabe durch sed für komplexe Dinge:

%Vor%

Das 2>&1 setzt stdout und stderr in den stdout-Stream und das sed ersetzt jeden Zeilenanfangsmarker durch drei Leerzeichen.

Wie gut das bei etwas wie wget funktioniert, das alle Arten von Cursormanipulationen durchführt, bin ich nicht sicher.

Beispiel hier gezeigt:

%Vor%

Ein Trick, den ich in der Vergangenheit verwendet habe, ist sicherzustellen, dass die Skripte selbst für den Einzug sorgen:

%Vor%

Dies führt das Skript mit dem Einzug durch sed erneut aus, wenn es das nicht bereits tut. Auf diese Weise müssen Sie sich nicht darum kümmern, alle Ihre Ausgabeanweisungen zu ändern. Ein bisschen ein Hack, ich weiß, aber ich neige dazu, nur das zu tun, was für schnell und schmutzig Shell-Skripte notwendig ist.

    
paxdiablo 20.07.2010, 02:45
quelle
4

Wenn Sie den Abstand ein- und ausschalten möchten, verwenden Sie das folgende awk-Skript:

%Vor%

Beachten Sie, dass es bei Ihrem Bash-Skript leichte Probleme gibt. Beachten Sie, dass die Verwendung von => in Ihren echo-Anweisungen das Zeichen = an die Datei "installing" ausgibt.

%Vor%

Die Kombination der beiden gibt mir:

%Vor%

Wo Do-stuff ist Ihr Bash-Skript und Magic-Abstand ist mein awk-Skript oben.

    
bstpierre 20.07.2010 02:56
quelle
2

Je nachdem, wie der Befehl in stdout schreibt, können Sie einfach mit einem einfachen awk-Skript einrücken:

%Vor%     
Mark Rushakoff 20.07.2010 02:48
quelle
1

Ganz unmagisch können Sie printf für Folgendes verwenden:

%Vor%

Es ist auch möglich, Befehle zu gruppieren, indem Sie sie in geschweifte Klammern einschließen und ihre Ausgabe wie folgt leeren:

%Vor%     
yabt 20.07.2010 12:18
quelle
0

Es ist möglich, stdout in stderr script / shell-wide per exec ...

umzuleiten %Vor%     
tom 20.07.2010 14:25
quelle
0

Benutze python pyp (Der Pyed Piper):

%Vor%     
Pieter 09.08.2015 13:14
quelle

Tags und Links