GNU/Linux >> Znalost Linux >  >> Linux

Jak naplnit soubor streamem z /dev/urandom se zadaným počtem řádků?

Snažím se naplnit soubor posloupností náhodných 0 a 1 s uživatelem definovaným počtem řádků a počtem znaků na řádek.

prvním krokem je získat náhodný stream 0 a 1s:

cat /dev/urandom | tr -dc 01

pak jsem zkusil naplnit soubor tímto streamem (a ukončit proces plnění pomocí ctrl+c)

cat /dev/urandom | tr -dc 01 > foo

když spočítám počet řádků takto vytvořeného souboru foo, dostanu 0 řádků.

cat foo | wc -l
0

Nyní jsem se pokusil ovládat proud, takže jsem vytvořil pojmenovanou rouru a nasměroval proud do ní. Potom jsem provedl připojení k pojmenovanému kanálu pomocí příkazu dd v marné naději, že tímto způsobem ovládnu počet znaků na řádek a počet řádků v souboru.

makefifo namedpipe
cat /dev/urandom | tr -dc 01 > namedpipe
dd if=namedpipe of=foo bs=10 count=5

soubor foo byl skutečně vyplněn 50 bajty 0 a 1 , ale počet řádků byl stále 0.

Jak to mohu vyřešit, asi budu muset do souboru vložit každý počet znaků nový řádek, ale pokud ano, nevím jak.

Přijatá odpověď:

Co takhle fold ? Je součástí coreutils…

$ tr -dc 01 < /dev/urandom | fold -w 30 | head -n 5
001010000111110001100101101101
000101110011011100100101111000
111010101011100101010110111001
111011000000000101111110110100
110011010111001110011010100011

Nebo pokud to není k dispozici, nějaká varianta awk :

$ tr -dc 01 < /dev/urandom | awk $0=RT RS=.{,30} | head -n 5
000100010010001110100110100111
101010010100100110111010001110
100011100101001010111101001111
010010100111100101101100010100
001101100000101001111011011000

Nebo můžete udělat něco se smyčkou…

$ for line in $(seq 1 5)
> do
>     echo $(tr -dc 01 < /dev/urandom | head -c 30)
> done
100101100111011110010010100000
000000010000010010110111101011
010000111110010010000000010100
001110110001111011101011001001
001010111011000111110001100110

Jsem si jistý, že existují i ​​jiné způsoby... Myslel jsem, že by to mohl udělat hexdump s vlastním formátem, ale zjevně ne... 😉


Linux
  1. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  2. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  3. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  1. Jak kódovat base64 /dev/random nebo /dev/urandom?

  2. Jak spustit soubor sh z jiného souboru sh

  3. Jak vytvořit soubor v Linuxu z okna terminálu?

  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Jak zjistit, které procesy využívají kolik entropie z /dev/urandom

  3. Jak Linux používá /dev/tty a /dev/tty0