GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso randomizzare le righe in un file utilizzando strumenti standard su Red Hat Linux?

Ehm, non dimentichiamolo

sort --random-sort

shuf è il modo migliore.

sort -R è dolorosamente lento. Ho appena provato a ordinare il file da 5 GB. Ho rinunciato dopo 2,5 ore. Quindi shuf risolto in un minuto.


E avrai una battuta Perl!

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

Utilizza un modulo, ma il modulo fa parte della distribuzione del codice Perl. Se questo non è abbastanza buono, potresti prendere in considerazione l'idea di crearne uno tuo.

Ho provato a usarlo con il -i flag ("edit-in-place") per modificare il file. La documentazione suggerisce che dovrebbe funzionare, ma non è così. Visualizza ancora il file mescolato su stdout, ma questa volta elimina l'originale. Ti suggerisco di non usarlo.

Considera uno script di 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

Non testato, ma si spera funzioni.


Linux
  1. Come copiare il layout della partizione di un intero disco utilizzando strumenti standard?

  2. usando Linux come posso passare il contenuto di un file come parametro a un eseguibile?

  3. Come posso contare il numero di cartelle in un'unità utilizzando Linux?

  4. Come posso modificare tutti i file restituiti da find in vi in ​​Linux?

  5. Linux + come consentire solo a un utente specifico di leggere il file

Come utilizzare il comando touch in Linux

Come utilizzare il comando head di Linux

Come usare il comando diff di Linux

Come cancellare in modo sicuro un disco e un file utilizzando il comando shred di Linux

Come mescolare le linee in un file in Linux

Come invertire le righe in un file in base al carattere in Linux