すべての組み合わせに対して5桁の配列を生成するbashスクリプトがあります。
#!/usr/bin/env bash
for combo in \
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9}\
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9}\
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9}\
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9}\
{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9};
do echo $combo;
done > output.txt
すると、以下が出力されます。
$ ./script.sh
aaaaa
aaaab
aaaac
...
しかし、これは私のコンピュータを停止します。徐々にファイルにデータを書き込む方法はありますか?また、出力をそれぞれ65536行ずつ別のファイルに分割できますか?出力1.txt、出力2.txt、出力3.txtのように?
ご協力ありがとうございます!
ベストアンサー1
シェルから膨大な量のメモリを消費することなく、このような大きな置換を生成することは困難です。
Pythonなどの他の言語を試すことができます。
$ python -c '
import itertools, string
l = [c for c in string.ascii_lowercase + string.digits]
for p in itertools.product(l, l, l, l, l): print "".join(p)
' > file