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

So teilen Sie eine große Datei in Teile bei bestimmten Zeilennummern auf

Als Linux-Administrator oder fortgeschrittener Benutzer ist die Beherrschung der Dateiverwaltung in der von Ihnen verwendeten Linux-Betriebssystemverteilung von größter Bedeutung. Die Dateiverwaltung ist ein Kernaspekt der Linux-Betriebssystemverwaltung, und ohne sie wären wir nicht in der Lage, dateibezogene Funktionen wie Dateiverschlüsselung, Dateibenutzerverwaltung, Dateikonformität, Dateiaktualisierungen und -wartung sowie Dateilebenszyklusverwaltung zu nutzen.

In diesem Artikel werden wir einen wichtigen Aspekt der Linux-Dateiverwaltung betrachten, nämlich das Aufteilen großer Dateien in Teile bei bestimmten Zeilennummern. Wenn das Ziel dieses Artikels nur darin bestünde, eine große Datei in überschaubare kleine Dateien aufzuteilen, ohne die Dateizeilenzahlen zu berücksichtigen, dann bräuchten wir nur die Bequemlichkeit der Aufteilung Befehl.

Beispielreferenzdatei

Damit dieses Tutorial Sinn macht, werden wir eine Beispieltextdatei einführen, die als große Datei fungiert, die wir von bestimmten Zeilennummern trennen möchten. Erstellen Sie eine Beispieltextdatei und füllen Sie sie wie gezeigt aus.

$ sudo nano sample_file.txt 

Öffnen Sie diese Datei mit dem cat-Befehl, um die zugehörigen Zeilennummern zu notieren:

$ cat -n sample_text.txt

Wie Sie bemerkt haben, hat die obige Datei 1 bis 20 Linien Nummern. Nehmen wir nun an, wir möchten diese Datei in 4 aufteilen Teile in Zeilennummer 5 , 11 und 17 .

Wir würden mit den folgenden Dateien resultieren:

  • file_1 enthält die Zeilen 1 bis 5 von sample_file.txt.
  • file_2 enthält die Zeilen 6 bis 11 von sample_file.txt.
  • file_3 enthält die Zeilen 12 bis 17 von sample_file.txt.
  • file_4 enthält die Zeilen 18 bis 20 von sample_file.txt.

Nachdem wir unsere Problemstellung verstanden haben, ist es an der Zeit, sich die Methoden anzusehen, die für eine praktikable Lösung erforderlich sind.

1. Head- und Tail-Befehle verwenden

Die Effektivität der Kombination dieser beiden Befehle zum Aufteilen einer großen Datei in Teile aus bereitgestellten Zeilennummern erfordert die Einbeziehung des -n Option als Teil der Befehlsausführung.

Zum Extrahieren der Zeilennummern 6 bis 11 , führen wir den folgenden Befehl aus.

$ tail -n +3 sample_file.txt | head -n $(( 11-6+1 ))

Um diese Ausgabe in file_2.txt zu speichern :

$ tail -n +6 sample_file.txt | head -n $((11-6+1)) > file_2.txt
$ cat file_2.txt

2. Verwenden des sed-Befehls

Seit dem sed Befehl zwei angegebene Adressbereiche unterstützt, können wir die Zeilen 12 extrahieren bis 17 wie folgt.

$ sed -n '12,17p; 18q' sample_file.txt

Wir können den Befehl ändern, um die obige Ausgabe in file_3.txt zu speichern .

$ sed -n '12,17p; 18q' sample_file.txt > file_3.txt
$ cat file_3.txt

3. Verwenden des awk-Befehls

Das awk Der Befehl unterstützt zahlreiche Funktionen wie Umleitung, Schleifen und Arrays. Daher können wir damit alle benötigten Dateiteile erstellen (file_1.txt , file_2.txt , file_3.txt und file_4.txt ) aus einer großen Datei (sample_file.txt ) mit einer einzigen Befehlsphrase, wie unten gezeigt.

Das awk Befehl ist mit den Schlüsselzeilennummern versehen (5 , 11 und 17 ) benötigt, um sample_file.txt aufzuteilen in vier Teile (file_1.txt , file_2.txt , file_3.txt und file_4.txt ).

$ awk -v nums="5 11 17" '
      BEGIN {
          c=split(nums,b)
          for(i=1; i<=c; i++) a[b[i]] j=1; out = "file_1.txt" } { print > out }
      NR in a {
          close(out)
          out = "file_" ++j ".txt"
      }' sample_file.txt

Das Ergebnis der Ausführung des obigen awk Befehl ist in der folgenden Bildschirmaufnahme ersichtlich.

Wir können jetzt große Dateien auf der Grundlage der bereitgestellten Zeilennummern durch verschiedene Ansätze bequem in Teile aufteilen, wie in diesem Tutorial beschrieben.

Vielleicht möchten Sie auch die folgenden verwandten Artikel lesen:

  • Wie man große (100 GB+) Dateien unter Linux schneller mit Gzip komprimiert
  • So erstellen Sie eine große 1-GB- oder 10-GB-Datei unter Linux
  • Wie man eine große Anzahl von Dateien unter Linux kopiert

Linux
  1. So teilen Sie eine einzelne Datei basierend auf Zeilen in mehrere Dateien auf

  2. Wie fügt man mehrere Zeilen an eine Datei an?

  3. Wie teilt man eine Datei und behält die erste Zeile in jedem der Teile bei?

  4. Wie kann ich das Postfach in eine einzelne Datei pro Nachricht aufteilen?

  5. Wie kopiert man die Zeilen 10 bis 15 einer Datei in eine andere Datei in Unix?

So teilen Sie große Audiodateien unter Linux

So teilen Sie eine große Archivdatei mit dem Split-Befehl in Linux in mehrere kleine Dateien auf

So teilen Sie eine große Archivdatei mit dem Split-Befehl in Linux in mehrere kleine Dateien auf

Wie teilt man eine MP3-Datei?

Wie Echo in Datei

So zeigen Sie Zeilennummern in Gedit an