GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu randomizovat řádky v souboru pomocí standardních nástrojů v Red Hat Linuxu?

Um, abych nezapomněl

sort --random-sort

shuf je nejlepší způsob.

sort -R je bolestně pomalý. Právě jsem se pokusil seřadit 5GB soubor. Po 2,5 hodinách jsem to vzdal. Poté shuf seřadíte to za minutu.


A dostanete jednu vložku Perl!

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

Používá modul, ale modul je součástí distribuce kódu Perl. Pokud to nestačí, můžete zvážit použití vlastního.

Zkoušel jsem to použít s -i příznak („edit-in-place“), aby mohl soubor upravit. Dokumentace naznačuje, že by to mělo fungovat, ale nefunguje. Stále zobrazuje zamíchaný soubor na stdout, ale tentokrát smaže originál. Navrhuji, abyste jej nepoužívali.

Zvažte skript 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

Netestováno, ale doufám, že funguje.


Linux
  1. 4 nástroje ke stažení libovolného souboru pomocí příkazového řádku v Linuxu

  2. Jak mohu symbolicky propojit soubor v Linuxu?

  3. Jak mohu spočítat počet složek na jednotce pomocí Linuxu?

  1. Jak extrahovat soubor tar.gz v Linuxu pomocí příkazového řádku

  2. Jak mohu upravit všechny soubory vrácené funkcí find in vi v systému Linux?

  3. Jak mohu skrýt výstup shellové aplikace v Linuxu?

  1. Jak zrcadlit úložiště v Linuxu

  2. Jak zkopírovat rozložení diskových oddílů celého disku pomocí standardních nástrojů?

  3. Jak odstranit prvních N řádků souboru Ascii pomocí příkazů Shell?