1つの列と1000行にゼロ値を持つデータファイルを作成するにはどうすればよいですか?
それは次のとおりです。
output:
0
0
0
0
0
.
.
。
答え1
答え2
単に、
printf '0\n%.0s' {1..1000}
またはfor
ループを使用してください。
for i in {1..1000}; do echo "0"; done
使用awk
、
awk 'BEGIN{for(c=0;c<1000;c++) print "0"}'
@StéphaneChazelasが指摘したように、{1..1000}
必須zsh
または最新のバージョンを使用するか、全範囲をメモリに保存することを意味します(複数回可能)bash
。または(OOMと競合しない場合)などの広い範囲を使用するよりもはるかに遅いことがわかります。つまり、拡張がうまくいきません。考えられる解決策は、次を使用することです。yash
ksh93
awk
yes 0 | head ...
{1..10000000}
for ((i=0; i<=10000000;i++)); do echo 0; done
(ksh93
/ zsh
/ bash
)メモリの問題はありませんが、まだサイズがかなりあります。専用ツールや実際のプログラミング言語方法よりも遅いです。
答え3
perl -e 'print "0\n" x 1000' > file.txt
@Stéphane Chazelasが指摘したように、これは大容量データの場合は高速ですが、メモリの問題が発生する可能性があります(yes|head
この場合はメソッドを使用)。
性能比較、3回連続実行の中で最高のものを選択
$ time perl -e 'print "0\n" x 100000000' > /dev/null
real 0m0.117s
$ time python -c 'import sys; sys.stdout.write("0\n" * 100000000)' > /dev/null
real 0m0.184s
$ time yes 0 | head -n 100000000 > /dev/null
real 0m0.979s
$ time awk 'BEGIN{for(c=0;c<100000000;c++) print "0"}' > /dev/null
real 0m12.933s
$ time seq 0 0 0 | head -n 100000000 > /dev/null
real 0m19.040s
答え4
seq
次のように使用できます。
seq 0 0 0 | head -1000