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

Zufällig eine bestimmte Anzahl von Linien aus einer Datendatei zeichnen?

Ich habe eine Datenliste, wie

12345
23456
67891
-20000
200
600
20
...

Angenommen, die Größe dieses Datensatzes (d. h. Dateizeilen) ist N . Ich möchte zufällig m zeichnen Zeilen aus dieser Datendatei. Daher sollte die Ausgabe zwei Dateien sein, eine ist die Datei, die diese m enthält Datenzeilen und die andere enthält N-m Datenzeilen.

Gibt es eine Möglichkeit, dies mit einem Linux-Befehl zu tun?

Akzeptierte Antwort:

Das ist vielleicht nicht der effizienteste Weg, aber es funktioniert:

shuf <file> > tmp
head -n $m tmp > out1
tail -n +$(( m + 1 )) tmp > out2

Mit $m enthält die Anzahl der Zeilen.


Linux
  1. Ermitteln Sie die Anzahl der Codezeilen aus dem GitHub-Repository

  2. Datei nach Anzahl der Zeilen aufteilen, einschließlich Header in jeder Zeile?

  3. Anzahl der von Ls ausgegebenen Zeilen?

  4. Effizient die ersten paar Zeilen aus einer Textdatei entfernen?

  5. Wie füllt man eine Datei mit einem Stream aus /dev/urandom mit einer bestimmten Anzahl von Zeilen?

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Linux - grep von bestimmten Zeilen bis zum Ende der Datei

Zeichnen Sie zufällig eine bestimmte Anzahl von Linien aus einer Datendatei

Zeilen von unten extrahieren, bis Regex übereinstimmt

Wie zeigt man bestimmte Zeilen aus einer Textdatei in Linux an?