Sto cercando di riempire un file con una sequenza di 0 e 1 casuali con un numero di righe definito dall'utente e un numero di caratteri per riga.
il primo passo è ottenere un flusso casuale di 0 e 1:
cat /dev/urandom | tr -dc 01
quindi ho provato a riempire un file con questo flusso (e terminare il processo di riempimento con ctrl+c)
cat /dev/urandom | tr -dc 01 > foo
quando conto il numero di righe del file foo così creato ottengo 0 righe.
cat foo | wc -l 0
Ora ho provato a controllare il flusso, quindi ho creato una pipe denominata e indirizzato il flusso in essa. Quindi ho effettuato una connessione alla named pipe con il comando dd sperando invano di controllare in questo modo la quantità di caratteri per riga e il numero di righe nel file.
makefifo namedpipe
cat /dev/urandom | tr -dc 01 > namedpipe
dd if=namedpipe of=foo bs=10 count=5
il file foo è stato effettivamente riempito con 50 byte di 0 e 1 , ma il numero di righe era ancora 0.
Come posso risolverlo, immagino che forse devo inserire ogni numero di caratteri una nuova riga nel file, ma se è così, non so come.
Risposta accettata:
Che ne dici di fold
? Fa parte di coreutils...
$ tr -dc 01 < /dev/urandom | fold -w 30 | head -n 5
001010000111110001100101101101
000101110011011100100101111000
111010101011100101010110111001
111011000000000101111110110100
110011010111001110011010100011
O se non è disponibile, un po' di awk
:
$ tr -dc 01 < /dev/urandom | awk $0=RT RS=.{,30} | head -n 5
000100010010001110100110100111
101010010100100110111010001110
100011100101001010111101001111
010010100111100101101100010100
001101100000101001111011011000
Oppure potresti semplicemente fare qualcosa con un ciclo...
$ for line in $(seq 1 5)
> do
> echo $(tr -dc 01 < /dev/urandom | head -c 30)
> done
100101100111011110010010100000
000000010000010010110111101011
010000111110010010000000010100
001110110001111011101011001001
001010111011000111110001100110
Sono sicuro che ci sono altri modi... Ho pensato che forse hexdump con un formato personalizzato potesse farlo, ma a quanto pare no... 😉