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.
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:
- Drücken Sie
Ctrl+X(um zu verlassen) - Drücken Sie
Y(um zu bestätigen, dass Sie die Änderungen speichern möchten) - 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 Nullenrn: rechtsbündig, keine führenden Nullenrz: 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
nlmit 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.



