2013-10-02 6 views
6

Ich versuche, das folgende Muster mit printf und seq zu drucken:Rohrleitungen seq für Nummer printf Formatierung

0000 
0001 
0002 
0003 

Mein Problem ist, wenn ich benutze:

seq 0 10 | xargs printf %04d 

alle meine Ausgabe formatiert ist in die selbe Zeile likeso:

0000000100020003 

Ich kann immer noch nicht den Dreh raus mit Xargs. Wie benutze ich es in diesem Fall richtig?

Antwort

15

Der Befehl printf gibt keinen Zeilenumbruch aus, wenn Sie nicht danach fragen. Versuchen:

seq 0 10 | xargs printf '%04d\n' 

Beachten Sie, dass Sie das gleiche mit nur seq erreichen kann, da es ermöglicht, ein printf-Stil-Format festgelegt wird:

seq -f %04g 0 10 
7

Sie nicht printf oder xargs brauchen. seq hat -f Option:

kent$ seq -f '%04G' 10 
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0
seq 0 10 | xargs printf "%04d\n" 

Die ursprüngliche Frage ist am Ende des printf das Newline-Zeichen fehlt. Durch einfaches Hinzufügen eines Zeilenumbaus wird das Problem behoben.

+0

Bitte fügen Sie weitere Erklärungen hinzu. – Szymon

+0

Fertig. Allerdings gibt es eine bessere Antwort mit dem Format auf 'seq'. – unxnut