GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich die Zeilen in einer Datei mit Standardwerkzeugen unter Red Hat Linux zufällig anordnen?

Ähm, vergessen wir nicht

sort --random-sort

shuf ist der beste Weg.

sort -R ist quälend langsam. Ich habe gerade versucht, eine 5-GB-Datei zu sortieren. Ich habe nach 2,5 Stunden aufgegeben. Dann shuf in einer Minute sortiert.


Und Sie bekommen einen Perl-Einzeiler!

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

Es verwendet ein Modul, aber das Modul ist Teil der Perl-Code-Distribution. Wenn das nicht gut genug ist, können Sie erwägen, Ihr eigenes zu rollen.

Ich habe versucht, dies mit dem -i zu verwenden Flag ("edit-in-place"), damit es die Datei bearbeitet. Die Dokumentation schlägt vor, dass es funktionieren sollte, aber es funktioniert nicht. Es zeigt immer noch die gemischte Datei auf stdout an, aber diesmal löscht es das Original. Ich schlage vor, Sie verwenden es nicht.

Betrachten Sie ein Shell-Skript:

#!/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

Ungetestet, aber funktioniert hoffentlich.


Linux
  1. Wie kopiert man das Partitionslayout einer ganzen Festplatte mit Standardwerkzeugen?

  2. Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

  3. 4 Tools zum Herunterladen einer beliebigen Datei über die Befehlszeile in Linux

  4. Wie kann ich unter Linux den Inhalt einer Datei als Parameter an eine ausführbare Datei übergeben?

  5. Wie kann ich die Ausgabe einer Shell-Anwendung in Linux ausblenden?

So verwenden Sie den Touch-Befehl unter Linux

So verwenden Sie den Linux-Kopfbefehl

So verwenden Sie den Linux-diff-Befehl

So löschen Sie eine Festplatte und Datei sicher mit dem Linux-Befehl shred

So mischen Sie Zeilen in einer Datei unter Linux

So kehren Sie Zeilen in einer Datei zeichenweise in Linux um