Linux nl-Befehl: Zeilennummerierung

LinuxLinuxBeginner
Jetzt üben

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

Einführung

Dieses Tutorial untersucht den nl-Befehl in Linux, der zum Nummerieren von Zeilen in Textdateien verwendet wird. Wir werden lernen, wie man diesen Befehl in verschiedenen Szenarien einsetzt, um es einfacher zu machen, bestimmte Zeilen in Dokumenten zu referenzieren. Diese Fähigkeit ist besonders nützlich für Programmierer, Systemadministratoren und alle, die regelmäßig mit Textdateien arbeiten.

Stellen Sie sich vor, Sie sind ein junger Softwareentwickler, der an Ihrem ersten großen Projekt arbeitet. Ihr Teamleiter hat Sie gebeten, eine Konfigurationsdatei zu überprüfen und bestimmte Abschnitte zu besprechen. Der Einsatz des nl-Befehls wird Ihnen helfen, bestimmte Zeilen in der Datei einfach zu referenzieren und zu besprechen, wodurch Ihre Zusammenarbeit effizienter wird.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/nl("Line Numbering") subgraph Lab Skills linux/nl -.-> lab-210988{{"Linux nl-Befehl: Zeilennummerierung"}} end

Grundlagen des nl-Befehls verstehen

Beginnen wir damit, eine Beispiel-Konfigurationsdatei mit dem nl-Befehl zu untersuchen.

  1. Zunächst wechseln wir in das Projektverzeichnis. Geben Sie den folgenden Befehl ein und drücken Sie Enter:
cd /home/labex/project

Dieser Befehl wechselt Ihr aktuelles Verzeichnis zu /home/labex/project, wo sich unsere Beispieldateien befinden.

  1. Jetzt verwenden wir den nl-Befehl, um den Inhalt von config.txt mit Zeilennummern anzuzeigen. Geben Sie ein:
nl config.txt

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

     1  ## Server Configuration
     2  port=8080
     3  max_connections=100
     4
     5  ## Database Settings
     6  db_host=localhost
     7  db_port=5432
     8  db_name=myapp
    ...

Schauen wir uns an, was hier passiert:

  • Der nl-Befehl hat links neben jeder Zeile in der Datei Zeilennummern hinzugefügt.
  • Beachten Sie, dass die Nummern in einer Spalte mit einer Breite von 6 Zeichen rechtsbündig ausgerichtet sind.
  • Die Leerzeile (Zeile 4 in der Originaldatei) wird standardmäßig nicht nummeriert.

Diese Nummerierung erleichtert es, auf bestimmte Zeilen zu verweisen, wenn Sie die Datei mit Ihren Kollegen besprechen. Beispielsweise könnten Sie sagen: "Schauen wir uns Zeile 2 an, um die Portnummer zu überprüfen."

Wenn Sie diese Ausgabe nicht sehen oder einen Fehler erhalten, stellen Sie sicher, dass Sie sich im richtigen Verzeichnis (/home/labex/project) befinden und dass die Datei config.txt existiert. Sie können dies überprüfen, indem Sie den ls-Befehl verwenden, um die Dateien im aktuellen Verzeichnis aufzulisten.

Nummerierung aller Zeilen, einschließlich Leerzeilen

Manchmal möchten Sie möglicherweise alle Zeilen, einschließlich Leerzeilen, nummerieren. Dies kann nützlich sein, wenn Sie auf Leerzeilen verweisen müssen oder wenn Sie mit Dateien arbeiten, bei denen Leerzeilen von Bedeutung sind. Verwenden wir die Option -b a, um dies zu erreichen.

Führen Sie den folgenden Befehl aus:

nl -b a config.txt

Sie sollten jetzt eine Ausgabe wie die folgende sehen:

     1  ## Server Configuration
     2  port=8080
     3  max_connections=100
     4
     5  ## Database Settings
     6  db_host=localhost
     7  db_port=5432
     8  db_name=myapp
   ...

Schauen wir uns an, was hier passiert:

  • Die Option -b steuert die Zeilennummerierung für den Inhalt der Datei.
  • Das Argument a steht für "all" (alle) und teilt nl mit, alle Zeilen, einschließlich Leerzeilen, zu nummerieren.
  • Beachten Sie, dass Zeile 4, die zuvor leer und unnummeriert war, jetzt eine Nummer hat.

Dies kann besonders nützlich sein, wenn Sie in Ihren Diskussionen auf Leerzeilen verweisen müssen oder wenn Sie mit Dateien arbeiten, bei denen Leerzeilen von Bedeutung sind (z. B. in einigen Programmiersprachen oder Konfigurationsdateien).

Wenn Sie nicht sehen, dass die Leerzeile nummeriert ist, überprüfen Sie noch einmal, ob Sie die Option -b a in Ihrem Befehl angegeben haben.

Anpassen des Nummerierungsformats

Der nl-Befehl ermöglicht es Ihnen, anzupassen, wie Zeilennummern angezeigt werden. Dies kann nützlich sein, um die Lesbarkeit zu verbessern oder die Ausgabe für weitere Verarbeitung vorzubereiten. Versuchen wir, die Nummern rechtsbündig auszurichten und führende Nullen hinzuzufügen.

Verwenden Sie die Option -n rz:

nl -n rz config.txt

Ihre Ausgabe sollte wie folgt aussehen:

000001  ## Server Configuration
000002  port=8080
000003  max_connections=100

000004  ## Database Settings
000005  db_host=localhost
000006  db_port=5432
000007  db_name=myapp

000008  ### Logging Configuration
000009  log_level=info
000010  log_file=/var/log/myapp.log

000011  ## Security Settings
000012  enable_ssl=true
000013  ssl_cert_path=/etc/ssl/certs/myapp.crt

000014  ### Performance Tuning
000015  cache_size=1024
000016  thread_pool=20

000017  ## Miscellaneous
000018  debug_mode=false

Lassen Sie uns die Option -n rz analysieren:

  • -n wird verwendet, um das Nummerierungsformat anzugeben.
  • r bedeutet rechtsbündig (was tatsächlich die Standardeinstellung ist).
  • z bedeutet, dass führende Nullen hinzugefügt werden.

Dieses Format kann besonders nützlich sein, wenn Sie die Ausgabe mit anderen Befehlen weiter sortieren oder verarbeiten müssen, da das Format mit fester Breite eine konsistente Ausrichtung gewährleistet.

Wenn Ihre Ausgabe nicht mit dieser übereinstimmt, stellen Sie sicher, dass Sie den Befehl korrekt eingegeben haben, einschließlich der Option -n rz.

Nummerierung bestimmter Zeilentypen

Der nl-Befehl ermöglicht es Ihnen, nur bestimmte Zeilentypen zu nummerieren. Dies kann äußerst nützlich sein, wenn Sie mit komplexen Dateien arbeiten und sich auf bestimmte Zeilen konzentrieren möchten. Lassen Sie uns nur die nicht-leeren Zeilen nummerieren, die nicht mit einem '#'-Zeichen beginnen (welches oft für Kommentare in Konfigurationsdateien verwendet wird).

Verwenden Sie den folgenden Befehl:

nl -b p'^[^#]' config.txt

Sie sollten eine Ausgabe wie die folgende sehen:

       ## Server Configuration
     1  port=8080
     2  max_connections=100

       ## Database Settings
     3  db_host=localhost
     4  db_port=5432
     5  db_name=myapp

       ### Logging Configuration
     6  log_level=info
     7  log_file=/var/log/myapp.log

       ## Security Settings
     8  enable_ssl=true
     9  ssl_cert_path=/etc/ssl/certs/myapp.crt

       ### Performance Tuning
    10  cache_size=1024
    11  thread_pool=20

       ## Miscellaneous
    12  debug_mode=false

Lassen Sie uns diesen komplexen Befehl analysieren:

  • -b p teilt nl mit, nur die Zeilen zu nummerieren, die einem bestimmten Muster entsprechen.
  • '^[^#]' ist ein regulärer Ausdruck (regular expression):
    • ^ bedeutet "Zeilenanfang"
    • [^#] bedeutet "jedes Zeichen, das nicht #" ist
    • Zusammen passt dieser Ausdruck also auf jede Zeile, die nicht mit ## beginnt

Dieser Befehl ist nützlich, wenn Sie sich auf aktive Konfigurationszeilen konzentrieren und Kommentare ignorieren möchten. Er ist besonders hilfreich in großen Konfigurationsdateien, in denen Sie die tatsächlichen Einstellungen schnell identifizieren und referenzieren möchten.

Wenn Sie nicht die erwartete Ausgabe sehen, überprüfen Sie noch einmal, ob Sie den Befehl genau so eingegeben haben, wie er gezeigt wird, einschließlich der einfachen Anführungszeichen um das Muster.

Kombination von Optionen für komplexe Nummerierung

Nachdem wir mehrere Optionen des nl-Befehls untersucht haben, kombinieren wir sie nun, um ein komplexeres Nummerierungsschema zu erstellen. Wir werden alle Zeilen nummerieren, ein benutzerdefiniertes Format verwenden und die Nummerierung für jeden Abschnitt neu starten.

Führen Sie den folgenden Befehl aus:

nl -b a -n rz -s ': ' -w 3 config.txt

Dieser Befehl macht Folgendes:

  • -b a: Nummeriere alle Zeilen, einschließlich Leerzeilen
  • -n rz: Richte die Nummern rechtsbündig aus und füge führende Nullen hinzu
  • -s ': ': Verwende ': ' als Trennzeichen zwischen der Nummer und dem Zeileninhalt
  • -w 3: Setze die Breite des Nummerierungsfelds auf 3 Zeichen

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

001: ## Server Configuration
002: port=8080
003: max_connections=100
004:
005: ## Database Settings
006: db_host=localhost
007: db_port=5432
008: db_name=myapp
009:
010: ### Logging Configuration
011: log_level=info
012: log_file=/var/log/myapp.log
013:
014: ## Security Settings
015: enable_ssl=true
016: ssl_cert_path=/etc/ssl/certs/myapp.crt
017:
018: ### Performance Tuning
019: cache_size=1024
020: thread_pool=20
021:
022: ## Miscellaneous
023: debug_mode=false

Lassen Sie uns analysieren, was hier passiert:

  1. Alle Zeilen werden nummeriert, einschließlich Leerzeilen.
  2. Die Nummern sind rechtsbündig mit führenden Nullen ausgerichtet.
  3. Das Trennzeichen zwischen der Nummer und dem Zeileninhalt ist ': '.
  4. Die Breite des Nummerierungsfelds ist auf 3 Zeichen festgelegt.

Dieses komplexe Nummerierungsschema kann sehr nützlich sein, wenn Sie mit strukturierten Konfigurationsdateien oder Dokumenten mit verschiedenen Abschnitten arbeiten. Es ermöglicht Ihnen, Zeilen innerhalb von Abschnitten einfach zu referenzieren.

Wenn Ihre Ausgabe nicht genau mit dieser übereinstimmt, überprüfen Sie sorgfältig den eingegebenen Befehl und achten Sie besonders auf die Leerzeichen und Sonderzeichen.

Zusammenfassung

In diesem Tutorial haben wir uns mit dem nl-Befehl und seinen verschiedenen Optionen zur Nummerierung von Zeilen in Textdateien beschäftigt. Wir haben gelernt, wie man:

  1. Den grundlegenden nl-Befehl verwendet, um Zeilennummern einer Datei hinzuzufügen
  2. Alle Zeilen, einschließlich Leerzeilen, mit der Option -b a nummeriert
  3. Das Nummerierungsformat mit der Option -n rz anpasst
  4. Bestimmte Zeilentypen mithilfe von Mustererkennung nummeriert
  5. Mehrere Optionen für komplexe Nummerierungsschemata kombiniert

Diese Fähigkeiten werden Ihnen helfen, Zeilen in Konfigurationsdateien, Quellcode oder anderen Textdateien, mit denen Sie in Ihren Entwicklungsprojekten arbeiten, zu navigieren und zu referenzieren.

Zusätzliche Optionen des nl-Befehls, die in diesem Tutorial nicht behandelt wurden, sind:

  • -v NUM: Beginne die Nummerierung bei NUM anstelle von 1
  • -i NUM: Erhöhe die Nummern um NUM anstelle von 1
  • -l NUM: Gruppiere NUM Zeilen zusammen und nummeriere nur die erste Zeile jeder Gruppe
  • -f a: Nummeriere alle Kopfzeilen (Zeilen vor der ersten Hauptzeile)

Diese Optionen bieten noch mehr Flexibilität bei der Arbeit mit dem nl-Befehl.

Ressourcen