2013-10-02 18 views
6

sto cercando di stampare il seguente schema utilizzando printf e seguenti:tubazioni ss a printf per numero di formattazione

0000 
0001 
0002 
0003 

Il mio problema è, una volta che uso:

seq 0 10 | xargs printf %04d 

tutta la mia uscita è formattato nella stessa linea di likeso:

0000000100020003 

ancora non riesco a ottenere il blocco di utilizzare xargs. Come lo uso correttamente in questo caso?

risposta

15

Il comando printf non emette un'interruzione di riga se non viene richiesta. Prova:

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

Si noti che è possibile ottenere lo stesso con un solo seq, dal momento che consente di specificare un formato printf-style:

seq -f %04g 0 10 
7

non è necessario printf o xargs. seq ha -f opzione:

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

La domanda iniziale non è presente il carattere di nuova riga alla fine del printf. Semplicemente aggiungendo un carattere di nuova riga risolve il problema.

+0

Per favore aggiungi qualche altra spiegazione. – Szymon

+0

Fatto. Sebbene ci sia una risposta migliore usando il formato su 'seq'. – unxnut