web-dev-qa-db-ja.com

数値フォーマットのためにseqをprintfにパイピング

Printfとseqを使用して次のパターンを印刷しようとしています。

0000
0001
0002
0003

私の問題は、一度使用すると次のようになります。

seq 0 10 | xargs printf %04d

私のすべての出力は、次のように同じ行にフォーマットされます。

0000000100020003

私はまだxargsを使うコツをつかむことができません。この場合、どうすれば正しく使用できますか?

12
Paolo

printfコマンドは、要求しない場合、改行を出力しません。試してください:

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

Printfスタイルのフォーマットを指定できるので、seqだけで同じことができることに注意してください。

seq -f %04g 0 10
21
Joni

printfまたはxargsは必要ありません。 seqには-fオプション:

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

元の質問には、printfの末尾に改行文字がありません。改行文字を追加するだけで問題が解決します。

0
unxnut