Frage 101-148

Mit welchem Kommando können Sie einen Bereich der Datei bla.txt ausgeben, der mit einer Zeile mit ANFANG am Anfang beginnt und mit einer Zeile mit ENDE am Anfang endet?

  1. sed -n '/^ANFANG/,/^ENDE/p' bla.txt

  2. grep '^ANFANG' bla.txt | grep '^ENDE'

  3. grep '^ANFANG' | grep '^ENDE' bla.txt

  4. cut ANFANG-ENDE bla.txt

LPI-Lernziel Textdateien mit regulären Ausdrücken durchsuchen (103.7)

grep (Antworten 2 und 3) wirkt immer nur auf einzelne Zeilen. In Antwort 2 würde das erste grep alle Zeilen durchlassen, die mit ANFANG anfangen, und das zweite in dieser Ausgabe nach Zeilen suchen, die mit ENDE anfangen -- eine logische Unmöglichkeit. Die Ausgabe des Kommandos dürfte also leer sein, was nicht im Sinne der Aufgabenstellung ist. Antwort 3 leidet außerdem an einer weiteren logischen Unmöglichkeit; wenn grep wie im zweiten Teil des Kommandos einen Dateinamen übergeben bekommt, ignoriert es seine Standardeingabe, also liefert das Kommando insgesamt alle Zeilen aus bla.txt, die mit ENDE anfangen -- ebenfalls falsch.

cut (Antwort 4) dient dazu, bestimmte Spalten oder Felder aus der Eingabe zu extrahieren, es schneidet also »vertikal« und nicht »horizontal«. Durch diesen philosophischen Irrtum kann es also auch nicht die richtige Wahl sein; die für cut falsche und verquere Parametersyntax kann es auch nicht mehr schlimmer machen.

Die einzig richtige Lösung in der Auswahl ist Antwort 1. sed -n arbeitet die Datei bla.txt ohne Ausgabe ab, und nur die Zeilen in einem Bereich zwischen einer ANFANG- und einer ENDE-Zeile werden explizit ausgegeben (das p-Kommando). Das funktioniert auch, wenn die Datei mehrere solche Bereiche enthält!

Noch kein Kommentar · Kommentar hinzufügen · RSS

Wichtig

LPI-Logo

Die LPI Academy ist keine offizielle Webseite des LPI!

Sponsor

Linup-Front-Logo

Die LPI Academy wird für die Community unterstützt von der Linup Front GmbH

A Django Site

Diese Seite

Version: 0 (Anselm)
22.8.2009 01:07:31

Benutzer

Nicht angemeldet

Kommentare

RSS