Perl-Kommentare entfernen mit sed

Dieses Thema im Forum "Anwendungen" wurde erstellt von angelsfall, 04.05.2007.

  1. #1 angelsfall, 04.05.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Hallo,

    eigentlich dachte ich, dass sei ein Leichtes, aber irgendwie krieg ich es grade nicht gebacken:
    Ich möchte aus einem Perl-Skript die Kommentarzeilen entfernen, um dann die übrig gebliebenen Zeilen zu zählen.
    Perl Kommentare werden durch ein # gekennzeichnet. Davor kann sich auch ein Space bzw. Tab befinden.

    Code:
    sed -ne '/^[[:blank:]]*[^#]/p' < script.pl | wc -l
    Diese Zeile entfernt alle Zeilen bis auf die Kommentarzeilen die mit Tabs und Spaces beginnen. Aber warum? Meiner Meinung nach ist das richtig.
    sed scheint sich aber nicht sonderlich für meine Meinung zu interessieren ;)
    (Ich habe auch schon blank durch space ersetzt, das hatte keine Auswirkung.)

    Korrigiert mich! :)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 04.05.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Wenn du nur die Zeilen filtern willst, die mit Leerzeichen oder tab gefolgt von # beginnen:

    Code:
    sed -ne '1p;/^[[:blank:]]*#/!p' < test
    Die Shebang wird hier mitgezählt (Zeile 1).

    Gruß Wolfgang
     
  4. #3 Fallout, 04.05.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    Ein blank oder space ist auch ein nicht-hash.
    Da sed gierigerweise von rechts nach links sucht, trifft der letzte dabei vorkommende nicht-hash spätestens auf das erste (von links) blank zu.
    Nur wenn das erste Zeichen ein hash ist, trifft das Muster darauf nicht zu.

    Wolfgang hat ja schon eine passende Alternative gezeigt.
    Zur Ergänzung noch die Möglichkeit des Herauslöschens statt Herausschreibens:
    Code:
    sed -e '[i]1p;[/i]/^[[:blank:]]*#/d' < script.pl | wc -l
    Gruß Daniel
     
  5. #4 angelsfall, 04.05.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Danke für eure Antworten.

    Ein !p ist also praktisch ein invertiertes print, richtig?
    Was genau meint hash im Zusammenhang mit sed?
     
  6. #5 Wolfgang, 04.05.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Nein, das ! bezieht sich auf die Bedingung davor.
    In diesem Fall :
    printe alles was nicht auf die Regex zutrifft.

    hash meint einfach das Zeichen #
    Sprich auch Doppelkreuz. ;)
    Und negiertes # bedeutet ja alles Zeichen außer #.
    Ein Tabulator ist also auch ein nicht Doppelkreuz.

    Gruß Wolfgang
     
Thema:

Perl-Kommentare entfernen mit sed

Die Seite wird geladen...

Perl-Kommentare entfernen mit sed - Ähnliche Themen

  1. Punkt aus Liste entfernen

    Punkt aus Liste entfernen: Hallo, ich habe eine Liste: jal_0.0800_0.9000_90_dunkel.rad jal_0.0800_0.9000_90_hell.rad jal_0.0800_0.9000_90_mittel.rad Und aus der...
  2. wie Alte Kernelversionen unter Debian entfernen

    wie Alte Kernelversionen unter Debian entfernen: Hallo, heute ist das neue Image mit dem Kernel update installiert worden von "linux-image-3.2.0-4-amd64:amd64 3.2.54-2" auf...
  3. Leerzeichen, Großbuchstaben, HTML Tags entfernen mittels SED

    Leerzeichen, Großbuchstaben, HTML Tags entfernen mittels SED: Hallo zusammen. Ich habe folgendes Anliegen: Ich habe eine HTML Datei mit entsprechenden Tags usw. . Diese möchte ich in eine normale Textdatei...
  4. Debian empfiehlt das Entfernen des Repos debian-multimedia.org

    Debian empfiehlt das Entfernen des Repos debian-multimedia.org: Das Debian-Projekt rät Nutzern eindringlich, die inoffizielle Paketquelle debian-multimedia.org aus den Paketquellen zu entfernen, weil das Angebt...
  5. Gnome will Ausweichmodus entfernen

    Gnome will Ausweichmodus entfernen: Geht es nach dem Veröffentlichungsteam von Gnome, wird Version 3.8 im April 2013 ohne Ausweichmodus erscheinen. Gnome wird dann nur noch auf...