Linux Zeilennummerierung

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Linux-Befehl nl verwenden, um Zeilennummern zu Textdateien hinzuzufügen. Das Nummerieren von Zeilen ist eine nützliche Technik, wenn Sie mit Konfigurationsdateien, Code oder jeder Textdokumentation arbeiten, bei der Sie auf bestimmte Zeilen verweisen müssen. Der Befehl nl bietet verschiedene Optionen, um das Nummerierungsformat anzupassen, was ihn zu einem flexiblen Werkzeug für verschiedene Dokumentations- und Verarbeitungsanforderungen macht.

Am Ende dieses Labs verstehen Sie, wie Sie grundlegende und fortgeschrittene Techniken zum Nummerieren von Zeilen auf Textdateien anwenden können, was Ihre Fähigkeiten in der Textverarbeitung unter Linux verbessern wird.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/nl("Line Numbering") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") linux/TextProcessingGroup -.-> linux/sed("Stream Editing") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/nl -.-> lab-271345{{"Linux Zeilennummerierung"}} linux/cat -.-> lab-271345{{"Linux Zeilennummerierung"}} linux/pwd -.-> lab-271345{{"Linux Zeilennummerierung"}} linux/sed -.-> lab-271345{{"Linux Zeilennummerierung"}} linux/nano -.-> lab-271345{{"Linux Zeilennummerierung"}} end

Erstellen einer Beispiel-Textdatei

In diesem Schritt erstellen Sie eine Beispiel-Textdatei, die Sie während dieses Labs zum Üben des Zeilennummerierens verwenden werden.

Zunächst überprüfen wir Ihr aktuelles Arbeitsverzeichnis. Standardmäßig sollten Sie sich im Verzeichnis /home/labex/project befinden. Sie können dies mit dem Befehl pwd bestätigen:

pwd

Sie sollten die folgende Ausgabe sehen:

/home/labex/project

Nun erstellen wir eine einfache Textdatei namens sample.txt mit dem Texteditor nano. Geben Sie den folgenden Befehl ein, um nano zu öffnen:

nano sample.txt

Geben Sie im nano-Editor den folgenden Inhalt ein:

Linux Commands
-------------
cat - display file contents
ls - list directory contents
cd - change directory
grep - search for patterns
chmod - change file permissions

Um die Datei zu speichern und nano zu verlassen:

  1. Drücken Sie Ctrl+X (um zu verlassen)
  2. Drücken Sie Y (um zu bestätigen, dass Sie die Änderungen speichern möchten)
  3. Drücken Sie Enter (um den Dateinamen zu bestätigen)

Nun überprüfen Sie, ob Ihre Datei erstellt wurde, indem Sie ihren Inhalt anzeigen:

cat sample.txt

Sie sollten den genauen Text, den Sie eingegeben haben, im Terminal sehen.

Grundlegende Zeilennummerierung mit nl

Nachdem Sie nun eine Beispiel-Textdatei erstellt haben, lernen wir, wie Sie mit dem Befehl nl Zeilennummern hinzufügen können. Der nl-Befehl in Linux wird verwendet, um die Zeilen in einer Datei zu nummerieren, was für Referenzzwecke nützlich sein kann.

Wir verwenden den grundlegenden nl-Befehl, um alle Zeilen in Ihrer Beispiel-Datei zu nummerieren:

nl sample.txt

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions

Beachten Sie, dass der nl-Befehl am Anfang jeder Zeile eine Zeilennummer hinzufügt. Dies ist das Standardverhalten des nl-Befehls.

Wenn Sie diese nummerierte Ausgabe in einer neuen Datei speichern möchten, können Sie die Ausgabeumleitung mit dem Symbol > verwenden:

nl sample.txt > numbered_sample.txt

Dieser Befehl erstellt eine neue Datei namens numbered_sample.txt, die die zeilennummerierte Version Ihrer ursprünglichen Datei enthält. Überprüfen wir den Inhalt dieser neuen Datei:

cat numbered_sample.txt

Sie sollten die gleiche nummerierte Ausgabe wie zuvor sehen, die nun in einer Datei gespeichert ist.

Der grundlegende nl-Befehl ist nützlich, aber manchmal müssen Sie möglicherweise anpassen, wie die Zeilennummerierung angezeigt wird. Im nächsten Schritt werden wir einige Anpassungsoptionen untersuchen.

Anpassen des Zeilennummerierungsformats

Der nl-Befehl bietet verschiedene Optionen, um anzupassen, wie Zeilennummern angezeigt werden. In diesem Schritt lernen Sie, wie Sie das Zeilennummerierungsformat an verschiedene Bedürfnisse anpassen können.

Startnummer

Standardmäßig beginnt die Zeilennummerierung bei 1. Sie können dies mit der Option -v (Startwert) ändern. Nummerieren wir die Zeilen ab 100:

nl -v 100 sample.txt > custom_start.txt

Zeigen Sie das Ergebnis an:

cat custom_start.txt

Sie sollten eine Ausgabe sehen, bei der die Zeilennummern ab 100 beginnen:

   100  Linux Commands
   101  -------------
   102  cat - display file contents
   103  ls - list directory contents
   104  cd - change directory
   105  grep - search for patterns
   106  chmod - change file permissions

Zahlenformat

Sie können auch das Zahlenformat mit der Option -n steuern. Die Formatangaben umfassen:

  • ln: linksbündig, keine führenden Nullen
  • rn: rechtsbündig, keine führenden Nullen
  • rz: rechtsbündig, mit führenden Nullen

Probieren wir es mit rechtsbündigen Zahlen mit führenden Nullen aus:

nl -n rz sample.txt > zero_padded.txt

Zeigen Sie das Ergebnis an:

cat zero_padded.txt

Sie sollten eine Ausgabe wie die folgende sehen:

000001  Linux Commands
000002  -------------
000003  cat - display file contents
000004  ls - list directory contents
000005  cd - change directory
000006  grep - search for patterns
000007  chmod - change file permissions

Breite des Nummernfelds

Sie können die Breite des Nummernfelds mit der Option -w steuern. Standardmäßig ist es 6 Zeichen breit. Setzen wir es auf 3:

nl -w 3 sample.txt > narrow_numbers.txt

Zeigen Sie das Ergebnis an:

cat narrow_numbers.txt

Sie sollten eine Ausgabe mit einem schmaleren Nummernfeld sehen:

  1  Linux Commands
  2  -------------
  3  cat - display file contents
  4  ls - list directory contents
  5  cd - change directory
  6  grep - search for patterns
  7  chmod - change file permissions

Versuchen Sie, mehrere Optionen zu kombinieren:

nl -v 10 -w 4 -n rz sample.txt > combined_format.txt

Dieser Befehl:

  • Beginnt die Nummerierung bei 10 (-v 10)
  • Setzt die Breite auf 4 Zeichen (-w 4)
  • Verwendet das rechtsbündige Format mit führenden Nullen (-n rz)

Zeigen Sie das kombinierte Ergebnis an:

cat combined_format.txt

Sie sollten eine angepasste Zeilennummerierung sehen:

0010  Linux Commands
0011  -------------
0012  cat - display file contents
0013  ls - list directory contents
0014  cd - change directory
0015  grep - search for patterns
0016  chmod - change file permissions

Diese Anpassungsoptionen geben Ihnen Flexibilität bei der Darstellung von Zeilennummern in Ihren Dokumenten.

Selektive Zeilennummerierung

Manchmal möchte man nur bestimmte Zeilen in einer Datei nummerieren, nicht alle. Der Befehl nl bietet Optionen, um Zeilen selektiv anhand bestimmter Kriterien zu nummerieren.

Eine Datei mit Leerzeilen erstellen

Zuerst erstellen wir eine neue Datei, die Leerzeilen enthält:

nano mixed_content.txt

Geben Sie im Nano-Editor den folgenden Inhalt ein (einschließlich der Leerzeilen):

Section 1: File Operations

cat - display file contents
less - view file content with pagination

Section 2: Navigation

cd - change directory
pwd - print working directory

Section 3: Permissions

chmod - change file permissions
chown - change file ownership

Speichern Sie die Datei, indem Sie Strg+X, dann J und Enter drücken.

Nur nicht-leere Zeilen nummerieren

Standardmäßig nummeriert nl alle Zeilen. Um nur nicht-leere Zeilen zu nummerieren, verwenden Sie die Option -b t:

nl -b t mixed_content.txt > numbered_nonempty.txt

Ergebnis anzeigen:

cat numbered_nonempty.txt

Sie sollten sehen, dass nur die nicht-leeren Zeilen nummeriert wurden:

     1  Section 1: File Operations

     2  cat - display file contents
     3  less - view file content with pagination

     4  Section 2: Navigation

     5  cd - change directory
     6  pwd - print working directory

     7  Section 3: Permissions

     8  chmod - change file permissions
     9  chown - change file ownership

Nur Zeilen nummerieren, die einem Muster entsprechen

Sie können auch nur Zeilen nummerieren, die einem bestimmten Muster entsprechen, indem Sie die Option -b p'PATTERN' verwenden. Um beispielsweise nur Zeilen zu nummerieren, die das Wort "Section" enthalten:

nl -b p'Section' mixed_content.txt > numbered_sections.txt

Ergebnis anzeigen:

cat numbered_sections.txt

Sie sollten sehen, dass nur Zeilen, die "Section" enthalten, nummeriert sind:

     1  Section 1: File Operations

       cat - display file contents
       less - view file content with pagination

     2  Section 2: Navigation

       cd - change directory
       pwd - print working directory

     3  Section 3: Permissions

       chmod - change file permissions
       chown - change file ownership

Das Trennzeichen anpassen

Das Standardtrennzeichen zwischen der Zeilennummer und dem Text ist ein Tabulator. Sie können dies mit der Option -s ändern:

nl -s '. ' mixed_content.txt > custom_separator.txt

Ergebnis anzeigen:

cat custom_separator.txt

Sie sollten Zeilennummern gefolgt von einem Punkt und einem Leerzeichen sehen:

     1. Section 1: File Operations

     2. cat - display file contents
     3. less - view file content with pagination

     4. Section 2: Navigation

     5. cd - change directory
     6. pwd - print working directory

     7. Section 3: Permissions

     8. chmod - change file permissions
     9. chown - change file ownership

Diese selektiven Nummerierungsoptionen ermöglichen es Ihnen, Zeilennummern nur dort anzuwenden, wo sie benötigt werden, wodurch Ihre Dokumente übersichtlicher und leichter zu referenzieren sind.

Praktische Anwendungen und fortgeschrittene Nutzung

In diesem letzten Schritt werden wir einige praktische Anwendungen und fortgeschrittene Nutzungsmöglichkeiten des nl-Befehls in realen Szenarien untersuchen.

Nummerierung mehrerer Dateien

Der nl-Befehl kann mehrere Dateien gleichzeitig verarbeiten. Erstellen wir zunächst eine zweite Datei:

nano commands2.txt

Fügen Sie den folgenden Inhalt hinzu:

Additional Linux Commands
------------------------
find - search for files
tar - archive files
ssh - secure shell connection
df - disk free space
top - display system processes

Speichern Sie die Datei und verlassen Sie nano. Nummerieren wir nun beide Dateien zusammen:

nl sample.txt commands2.txt > combined_numbered.txt

Zeigen Sie das kombinierte Ergebnis an:

cat combined_numbered.txt

Sie sollten sehen, dass beide Dateien nacheinander nummeriert sind:

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions
     1  Additional Linux Commands
     2  ------------------------
     3  find - search for files
     4  tar - archive files
     5  ssh - secure shell connection
     6  df - disk free space
     7  top - display system processes

Beachten Sie, dass die Zeilennummerierung für die zweite Datei neu beginnt. Wenn Sie eine fortlaufende Nummerierung über alle Dateien hinweg wünschen, können Sie die Option -i verwenden:

nl -i 1 -n ln sample.txt commands2.txt > continuously_numbered.txt

Zeigen Sie das Ergebnis an:

cat continuously_numbered.txt

Sie sollten eine fortlaufende Nummerierung über beide Dateien hinweg sehen:

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions
     8  Additional Linux Commands
     9  ------------------------
    10  find - search for files
    11  tar - archive files
    12  ssh - secure shell connection
    13  df - disk free space
    14  top - display system processes

Kombination mit anderen Befehlen

Der nl-Befehl kann mit anderen Linux-Befehlen mithilfe von Pipes kombiniert werden. Beispielsweise können Sie die Zeilen der Ausgabe eines Befehls nummerieren:

ls -l /etc | nl > numbered_ls_output.txt

Zeigen Sie das Ergebnis an:

cat numbered_ls_output.txt

Sie sollten die Ausgabe von ls -l /etc mit hinzugefügten Zeilennummern sehen.

Praktischer Anwendungsfall: Hinzufügen von Zeilennummern zu einer Protokolldatei

Die Zeilennummerierung ist besonders nützlich bei der Analyse von Protokolldateien. Sehen wir uns an, wie wir nl verwenden können, um Zeilennummern zu Protokollen hinzuzufügen:

## First, create a sample log file
cat > sample_log.txt << EOF
[2023-07-01 10:15:22] INFO: System startup
[2023-07-01 10:15:24] INFO: Loading configuration
[2023-07-01 10:15:25] WARNING: Config file is outdated
[2023-07-01 10:15:28] ERROR: Failed to connect to database
[2023-07-01 10:15:30] INFO: Retrying database connection
[2023-07-01 10:15:33] INFO: Database connection established
[2023-07-01 10:15:35] INFO: System ready
EOF

Fügen Sie nun Zeilennummern in einem benutzerdefinierten Format hinzu, das die Zeilennummer in Klammern enthält:

nl -s ' [Line: ' -n ln -w 2 -b a sample_log.txt | sed 's/$/]/' > numbered_log.txt

Dieser Befehl:

  • Verwendet ein benutzerdefiniertes Trennzeichen -s ' [Line: '
  • Verwendet linksbündige Zahlen ohne führende Nullen -n ln
  • Setzt die Breite auf 2 Zeichen -w 2
  • Nummeriert alle Zeilen -b a
  • Verwendet sed, um ein schließendes Klammerzeichen am Ende jeder Zeile hinzuzufügen

Zeigen Sie das Ergebnis an:

cat numbered_log.txt

Sie sollten Protokolleinträge mit Zeilennummern in Klammern sehen:

 1 [Line: [2023-07-01 10:15:22] INFO: System startup]
 2 [Line: [2023-07-01 10:15:24] INFO: Loading configuration]
 3 [Line: [2023-07-01 10:15:25] WARNING: Config file is outdated]
 4 [Line: [2023-07-01 10:15:28] ERROR: Failed to connect to database]
 5 [Line: [2023-07-01 10:15:30] INFO: Retrying database connection]
 6 [Line: [2023-07-01 10:15:33] INFO: Database connection established]
 7 [Line: [2023-07-01 10:15:35] INFO: System ready]

Dieses Format kann sehr nützlich sein, wenn Sie bestimmte Protokolleinträge in Dokumentationen oder Diskussionen referenzieren.

Nun haben Sie ein gutes Verständnis davon, wie Sie den nl-Befehl für einfache und fortgeschrittene Zeilennummerierung in Linux verwenden können. Diese Fähigkeit wird Ihnen bei der Arbeit mit Textdateien, Protokollen, Code und Dokumentationen von Wert sein.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Linux-Befehl nl verwenden können, um Zeilennummern zu Textdateien hinzuzufügen. Hier ist eine Zusammenfassung der behandelten Schlüsselkonzepte:

  • Grundlegende Zeilennummerierung mit dem einfachen nl-Befehl
  • Anpassung des Zeilennummerierungsformats mit Optionen wie -v (Startwert), -n (Zahlenformat) und -w (Breite)
  • Selektive Zeilennummerierung mit Optionen wie -b t (nicht-leere Zeilen) und -b p'PATTERN' (Musterübereinstimmung)
  • Anpassung des Trennzeichens zwischen Zeilennummern und Text mit der Option -s
  • Arbeiten mit mehreren Dateien und Erstellen einer fortlaufenden Nummerierung über mehrere Dateien hinweg
  • Kombinieren von nl mit anderen Befehlen mithilfe von Pipes
  • Praktische Anwendungen wie die Nummerierung von Protokolldateien für eine einfachere Referenzierung

Der nl-Befehl ist ein wertvolles Werkzeug für die Textverarbeitung in Linux, insbesondere wenn Sie bestimmte Zeilen in Dokumentationen, Code-Reviews oder bei der Analyse von Protokolldateien referenzieren müssen. Durch das Beherrschen der verschiedenen Optionen von nl verfügen Sie nun über eine leistungsstarke Technik, um die Lesbarkeit und Nutzbarkeit von textbasierten Daten zu verbessern.

Wenn Sie Ihre Linux-Reise fortsetzen, denken Sie daran, dass Textverarbeitungsbefehle wie nl, in Kombination mit anderen Tools, die Grundlage für eine effiziente Dateimanipulation und Datenverarbeitung in der Linux-Umgebung bilden.