Zeilen nummerieren

In einigen Fällen kann der Bedarf entstehen, die Zeilen von Textdateien zu nummerieren. Das erledigen Sie mittels nl. Die Tabelle "Nl: Optionen" führt die wichtigsten Optionen auf, Listing 14 zeigt einige Praxisbeispiele. Im Alltag versehen Sie damit vorsortierte Dateien mit eindeutigen Zeilennummern. Das hilft vor allem dann, wenn Sie über diverse Suchfunktionen gezielt einzelne Zeilen ansprechen müssen.

Nl: Optionen

Aktion Option Schalter
Numeriert gemäß [UMFANG] -b[UMFANG] a = alle Zeilen, t = nur Zeilen mit Inhalt, n = keine Zeilen
Numeriert mit [FORMAT] -n[FORMAT] ln = linksbündig, rn = rechtsbündig, rz = rechtsbündig, führende Nullen
Trennzeichen -s[TRENNZEICHEN]
Startwert -v[STARTWERT]
Inkrement -i[INKREMENT]

Listing 14

#!/bin/bash
# Alle Zeilen nummerieren, auch Leerzeilen
# Standard: rechtsbündig (-nrn)
nl -ba < Adressen.txt
# Alle Zeilen linksbündig nummerieren
nl -ba -nln < Adressen.txt
# Alle Zeilen rechtsbündig nummerieren,
# führende Nullen, Trennzeichen = |
nl -ba -nrz -s'|' < Adressen.txt
# Alle Zeilen nummerieren,
# erste Zeile=10, Schrittweite = 20
nl -v10 -i20 < Adressen.txt

Identische Zeilen

Zusammen mit Sort setzen Sie das Kommando uniq ein, um doppelt vorhandene Zeilen zu erkennen und zu behandeln. Das Tool erwartet die mehrfach vorhandenen, identischen Zeilen stets direkt aufeinander folgend – daher die Kombination mit Sort. Die wichtigsten Optionen fasst die Tabelle "Uniq-Optionen" zusammen.

Uniq-Optionen

Aktion Option
-c Vorkommen zählen
-d/-D nur mehrfach vorhandene Zeilen ausgeben
-u nur einfach vorkommende Zeilen ausgeben
-i Groß/Kleinschreibung ignorieren
-zZahl nur Zahl Zeichen je Zeile vergleichen

Als Datensatz für die Beispiele dient die Datei einzigartig.txt, die Sie in Listing 15 sehen. Das Beispiel aus Listing 16 zeigt Ihnen verschiedene Abläufe. Interessant für die Praxis ist das Umkehren des Befehls, nämlich nur einfach vorhandene Zeilen auszugeben. Auch das Ignorieren der Groß- und Kleinschreibung erweist sich oft als hilfreich.

Listing 15

a
A
C
D

Listing 16

#!/bin/bash
# Aufruf ohne Sortierung
uniq < einzigartig.txt
echo "-------------"
# Vorsortierung, Schreibweise
# ignorieren, Vorkommen zählen
sort -f < einzigartig.txt | uniq -ic
echo "-------------"
# Ausgabe mehrfach vorhandener Zeilen
sort -f < einzigartig.txt | uniq -id
echo "-------------"
# Ausgabe einfach vorhandener Zeilen
sort -f < einzigartig.txt | uniq -iu

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Verschlungene Pfade
    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.
  • Mehr Komfort
    Von einfachen Abfragen bis hin zu komplexen Menüs: Mit dem Toolkit Dialog bauen Sie eine grafische Oberfläche für Shell-Skripte, die oft nicht mehr als eine zusätzliche Zeile brauchen.
  • Einführung in die Bash-Programmierung
    Skripte sollen meist wiederkehrende oder lästige Arbeiten automatisieren. Die Standard-Shell Bash stellt Ihnen dazu eine ganze Reige von Funktionen bereit. Dieser Artikel erklärt, wie Sie ihre eigenen Shell-Skripte schreiben.
  • Kreislauf
    Schleifen ermöglichen das mehrmalige Abarbeiten von Anweisungen. Dabei kann das begrenzende Ereignis sowohl außerhalb als auch innerhalb der Schleife liegen.
  • Bash-Skripte sind Programme
    Wer regelmäßig mit der Shell arbeitet, wird leicht zum Programmierer: Schreiben Sie mehrere Shell-Befehle in eine Textdatei und machen diese ausführbar, haben Sie schon Ihr erstes Shell-Skript entwickelt. Die Shell bietet als Programmiersprache aber noch viel mehr.
Kommentare
Anmerkung zu $(( ... )) in der bash
Markus (unangemeldet), Sonntag, 19. März 2017 22:47:52
Ein/Ausklappen

Die Variablen innerhalb der doppelten Klammern müssen nicht nochmals mit $ angegeben werden, die bash verträgt auch direkt den Namen:

i=5
echo $((i*2))



Bewertung: 180 Punkte bei 18 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 03/2018 NEUE DISTRIBUTIONEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Internet abschalten
Karl-Heinz Hauser, 20.02.2018 20:10, 0 Antworten
In der Symbolleiste kann man das Kabelnetzwerk ein und ausschalten. Wie sicher ist die Abschaltu...
JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 2 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...