ユーザー定義の行数と1行あたりの文字数を使用して、ランダムな0と1のシーケンスでファイルを埋めようとしています。
最初のステップは、0と1のランダムストリームを取得することです:
cat /dev/urandom | tr -dc 01
次に、このストリームでファイルを埋めようとしました(そして、ctrl + cで埋めるプロセスを終了します)
cat /dev/urandom | tr -dc 01 > foo
そのように作成されたfooファイルの行数を数えると、0行になります。
cat foo | wc -l 0
ここでストリームを制御しようとしたので、名前付きパイプを作成してストリームをそのパイプに向けました。次に、ddコマンドを使用して名前付きパイプに接続しましたが、この方法で1行あたりの文字数とファイル内の行数を制御することはできませんでした。
makefifo namedpipe
cat /dev/urandom | tr -dc 01 > namedpipe
dd if=namedpipe of=foo bs=10 count=5
fooファイルは確かに0と1の50バイトでいっぱいになりましたが、行数はまだ0でした。
どうすれば解決できますか。ファイルに各文字数の改行を挿入する必要があると思いますが、そうであれば、方法がわかりません。
承認された回答:
fold
はどうですか ?これはcoreutilsの一部です…
$ tr -dc 01 < /dev/urandom | fold -w 30 | head -n 5
001010000111110001100101101101
000101110011011100100101111000
111010101011100101010110111001
111011000000000101111110110100
110011010111001110011010100011
または、それが利用できない場合は、awk
のフレーバーがあります :
$ tr -dc 01 < /dev/urandom | awk $0=RT RS=.{,30} | head -n 5
000100010010001110100110100111
101010010100100110111010001110
100011100101001010111101001111
010010100111100101101100010100
001101100000101001111011011000
または、ループで何かを行うこともできます…
$ for line in $(seq 1 5)
> do
> echo $(tr -dc 01 < /dev/urandom | head -c 30)
> done
100101100111011110010010100000
000000010000010010110111101011
010000111110010010000000010100
001110110001111011101011001001
001010111011000111110001100110
他の方法があると確信しています…カスタム形式のhexdumpで可能だと思いましたが、明らかにそうではありません…😉