GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mengisi File Dengan Aliran Dari /dev/urandom Dengan Jumlah Baris Tertentu?

Saya mencoba mengisi file dengan urutan 0 dan 1 acak dengan jumlah baris yang ditentukan pengguna dan jumlah karakter per baris.

langkah pertama adalah mendapatkan aliran acak 0 dan 1:

cat /dev/urandom | tr -dc 01

kemudian saya mencoba mengisi file dengan aliran ini (dan mengakhiri proses pengisian dengan ctrl+c)

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

ketika saya menghitung jumlah baris dari file foo yang dibuat, saya mendapatkan 0 baris.

cat foo | wc -l
0

Sekarang saya mencoba mengontrol aliran, jadi saya membuat pipa bernama dan mengarahkan aliran ke dalamnya. Kemudian saya membuat koneksi ke pipa bernama dengan perintah dd dengan harapan sia-sia untuk mengontrol jumlah karakter per baris dan jumlah baris dalam file dengan cara ini.

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

file foo memang diisi dengan 50 byte 0 dan 1 , tetapi jumlah barisnya masih 0.

Bagaimana saya bisa menyelesaikannya, saya kira mungkin saya harus memasukkan setiap jumlah karakter baris baru ke dalam file, tetapi jika demikian, saya tidak tahu caranya.

Jawaban yang Diterima:

Bagaimana kalau fold ? Itu bagian dari coreutils…

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

Atau jika itu tidak tersedia, beberapa rasa awk :

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

Atau Anda bisa melakukan sesuatu dengan loop…

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

Saya yakin ada cara lain… Saya pikir mungkin hexdump dengan format khusus bisa melakukannya, tapi ternyata tidak… 😉


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  3. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  1. Kapan Menggunakan /dev/random Vs /dev/urandom?

  2. Apa itu file /dev/zero dan /dev/null di Linux?

  3. Cara menjalankan file sh dari file sh lain

  1. Bagaimana Anda menukar/dev/sda dengan/dev/sdb?

  2. DD dari /dev/zero ke /dev/null...apa yang sebenarnya terjadi

  3. Linux:Perbedaan antara /dev/console , /dev/tty dan /dev/tty0