JP Coders

Published on

Bashで乱数のランダムな横n文字x縦n文字のテキストデータを生成する

Linuxパソコン・サーバーのコマンドラインからBashで乱数のランダムな横n文字x縦n文字のテキストデータを生成する方法について紹介します。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_27c993f8-6efa-4bc8-acc1-f7aee93ac155.png

5文字x5文字 合計25文字のランダムな文字キャラクターで構成されたテキストデータを生成する例

yuis ASUS /mnt/c/pg$ gentext 5 5 random
AsVDT
iCPZi
Ihlv8
NVwc0
TofvP

乱数にする必要がない場合は第三引数を空欄または任意の文字で指定で同じ文字でテキストデータが出力されます。

yuis ASUS /mnt/c/pg$ gentext 5 5
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX

生成されたデータをファイルに出力したい場合は通常通りパイプします。

yuis ASUS /mnt/c/pg$ gentext 5 5 random > tmp.txt

コード

以下コードです。


gentext02(){
  : <<< '
  generate a large size of text contents.

  e.g. gentext02 [width] [height] [char]
  e.g. gentext02 100 100 Z
  e.g. gentext02 100 100 random > tmp.txt

  i.e. check how long time fzf takes against to a large of text contents.
    tmpdird
    push gentext02 20 50000 random > tmp.txt
    cat tmp.txt | fzf
  '

  for i in $(seq "${2:-10}") ; do
    # printf "${3:-X}%.0s" {1..${1:-10}} ; printf '\n'

      [[ "${3}" =~ rand|random ]] && {
        # printf "$( randsel {a..z} )%.0s" $( eval "echo {1..${1:-10}}" ) ; printf '\n'
        random ${1:-10}
      } || {
        printf "${3:-X}%.0s" $( eval "echo {1..${1:-10}}" ) ; printf '\n'
      }

  done

}

alias gentext="gentext02"

コードの説明

gentext関数は、横n文字x縦n文字のテキストデータを生成する関数です。

  1. 第2引数が指定されていない場合は10を指定します。
for i in $(seq "${2:-10}") ; do
  1. 第3引数がrandまたはrandomの場合は、random関数を呼び出します。
[[ "${3}" =~ rand|random ]] && {
  random ${1:-10}
} || {
  printf

"${3:-X}%.0s" $( eval "echo {1..${1:-10}}" ) ; printf '\n'
}
  1. random関数を呼び出します。
random ${1:-10}
  1. 第3引数が指定されていない場合はXを指定します。
printf "${3:-X}%.0s" $( eval "echo {1..${1:-10}}" ) ; printf '\n'
  1. 横n文字x縦n文字のテキストデータを生成します。
printf "${3:-X}%.0s" $( eval "echo {1..${1:-10}}" ) ; printf '\n'
  1. gentext関数をgentext02としてエイリアスします。
alias gentext="gentext02"

使い方

これを~/.bashrcなどに追記して、シェルを再起動するか、source ~/.bashrcなどで読み込んでください。

gentextコマンドを使うと、横n文字x縦n文字のテキストデータを生成できます。

random(){
  ARG1=${1:-32}
  # cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $1 | head -n 1
  cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $ARG1 | head -n 1
}
Authors
  • avatar
  • Name
  • 情報技術者 / Z世代プログラマー / 米大学院にてデータサイエンスを学ぶ

  • ITプロフェッショナルとして活動しています。React.js等のモダンなウェブ制作・アプリ開発を得意としており、Java・Python・Rust等のプログラミング言語を用いたソフトウェア開発全般を行っています。

お手伝いできますか? 🤝

他の方法でのご連絡をご希望ですか?
web制作ご依頼受付中

本記事で掲載している情報やコードは執筆時点のものであり、動作を保証するものではありません。 自己責任のもと、プログラムの実行や情報の利用にあたってはご注意ください。


本記事には提携する企業の広告が含まれる場合があります。