Printfとseqを使用して次のパターンを印刷しようとしています。
0000
0001
0002
0003
私の問題は、一度使用すると次のようになります。
seq 0 10 | xargs printf %04d
私のすべての出力は、次のように同じ行にフォーマットされます。
0000000100020003
私はまだxargsを使うコツをつかむことができません。この場合、どうすれば正しく使用できますか?
printf
コマンドは、要求しない場合、改行を出力しません。試してください:
seq 0 10 | xargs printf '%04d\n'
Printfスタイルのフォーマットを指定できるので、seq
だけで同じことができることに注意してください。
seq -f %04g 0 10
printf
またはxargs
は必要ありません。 seq
には-f
オプション:
kent$ seq -f '%04G' 10
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
seq 0 10 | xargs printf "%04d\n"
元の質問には、printf
の末尾に改行文字がありません。改行文字を追加するだけで問題が解決します。