GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengacak baris dalam file menggunakan alat standar di Red Hat Linux?

Um, jangan lupa

sort --random-sort

shuf adalah cara terbaik.

sort -R sangat lambat. Saya baru saja mencoba mengurutkan file 5GB. Saya menyerah setelah 2,5 jam. Lalu shuf mengurutkannya dalam satu menit.


Dan satu baris Perl yang Anda dapatkan!

perl -MList::Util -e 'print List::Util::shuffle <>'

Ini menggunakan modul, tetapi modul tersebut adalah bagian dari distribusi kode Perl. Jika itu tidak cukup baik, Anda dapat mempertimbangkan untuk meluncurkannya sendiri.

Saya mencoba menggunakan ini dengan -i tandai ("edit-in-place") untuk mengedit file. Dokumentasi menyarankan itu harus berfungsi, tetapi tidak. Itu masih menampilkan file yang diacak ke stdout, tetapi kali ini menghapus yang asli. Saya sarankan Anda tidak menggunakannya.

Pertimbangkan skrip shell:

#!/bin/sh

if [[ $# -eq 0 ]]
then
  echo "Usage: $0 [file ...]"
  exit 1
fi

for i in "[email protected]"
do
  perl -MList::Util -e 'print List::Util::shuffle <>' $i > $i.new
  if [[ `wc -c $i` -eq `wc -c $i.new` ]]
  then
    mv $i.new $i
  else
    echo "Error for file $i!"
  fi
done

Belum diuji, tapi semoga berhasil.


Linux
  1. 4 alat untuk mengunduh file apa pun menggunakan baris perintah di Linux

  2. Bagaimana saya bisa menghubungkan file di Linux?

  3. menggunakan linux bagaimana saya bisa meneruskan konten file sebagai parameter ke yang dapat dieksekusi?

  1. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  2. Cara mencerminkan repositori di Linux

  3. Bagaimana saya bisa menghitung jumlah folder di drive menggunakan Linux?

  1. Bagaimana Cara Menyalin Tata Letak Partisi Disk Utuh Menggunakan Alat Standar?

  2. Bagaimana Cara Menghapus N Baris Pertama Dari File Ascii Menggunakan Perintah Shell?

  3. Bagaimana saya bisa mengedit semua file yang dikembalikan oleh find in vi di Linux?