🏭
ブレース展開を使ったダミーデータの生成
シェルのブレース展開を使用したダミーデータの生成方法
環境
- OS
- MacOS
- バージョン
% sw_vers
ProductName: macOS
ProductVersion: 12.4
BuildVersion: 21F79
ブレース展開を使ったダミーデータの生成
ブレース展開を使うと{}内に並べた語句の全組み合わせが出力されます。
trでスペースを改行に変換
% echo {ab,cd}.{ef,gh}@{ij,kl}.{jp,com} | tr ' ' '\n'
ab.ef@ij.jp
ab.ef@ij.com
ab.ef@kl.jp
ab.ef@kl.com
ab.gh@ij.jp
ab.gh@ij.com
ab.gh@kl.jp
ab.gh@kl.com
cd.ef@ij.jp
cd.ef@ij.com
cd.ef@kl.jp
cd.ef@kl.com
cd.gh@ij.jp
cd.gh@ij.com
cd.gh@kl.jp
cd.gh@kl.com
4語以外のデータも作りたい
{}内に空の項目(カンマのみ)を記載します。
sedで余計なドット(.)を削除
% echo {ab,cd,}.{ef,gh}@{ij,kl}.{jp,com} | tr ' ' '\n' | sed 's/^\.//'
ab.ef@ij.jp
ab.ef@ij.com
ab.ef@kl.jp
ab.ef@kl.com
ab.gh@ij.jp
ab.gh@ij.com
ab.gh@kl.jp
ab.gh@kl.com
cd.ef@ij.jp
cd.ef@ij.com
cd.ef@kl.jp
cd.ef@kl.com
cd.gh@ij.jp
cd.gh@ij.com
cd.gh@kl.jp
cd.gh@kl.com
ef@ij.jp
ef@ij.com
ef@kl.jp
ef@kl.com
gh@ij.jp
gh@ij.com
gh@kl.jp
gh@kl.com
ランダムで並べたい
sortコマンドを-Rオプションで実行します。
% echo {ab,cd,}.{ef,gh}@{ij,kl}.{jp,com} | tr ' ' '\n' | sed 's/^\.//' | sort -R
cd.ef@ij.jp
cd.gh@kl.jp
ab.ef@ij.jp
ef@ij.com
gh@ij.com
ef@kl.com
ab.ef@kl.jp
cd.gh@ij.jp
cd.ef@kl.com
gh@kl.jp
ab.ef@ij.com
cd.gh@ij.com
gh@kl.com
cd.ef@ij.com
cd.ef@kl.jp
ab.gh@kl.com
ab.ef@kl.com
ef@ij.jp
ab.gh@ij.jp
ab.gh@ij.com
ef@kl.jp
gh@ij.jp
cd.gh@kl.com
ab.gh@kl.jp
もっと楽して色々な単語のドメインを含んだデータを作成したい
/usr/share/dict/wordsという英単語を含んだファイルがあり、これを使います。
% wc -l /usr/share/dict/words
235886 /usr/share/dict/words
% head /usr/share/dict/words
A
a
aa
aal
aalii
aam
Aani
aardvark
aardwolf
Aaron
shuf -n1
でシャッフルした上で1つ選ぶようにして、seqで100回実行させます。
サブドメインが無いデータを作るためにわざわざnoword.
を最後に削除しています。(もっとスマートにしたい😥)
% seq -f 'echo $(shuf -n1 -e www api noword).$(cat /usr/share/dict/words|shuf -n1).$(shuf -n1 -e {com,org,{co.,ne.,}jp,net}) # %g' 100 | bash | sed 's/^noword\.//'
www.tulipomaniac.jp
api.headforemost.jp
margent.com
api.testiculate.jp
rah.org
protocorm.net
api.pathognomy.net
api.equiproportional.net
api.bellow.net
www.exosporium.org
Discussion