Einlesemarkierungen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Thomy, 19.02.2008.

  1. Thomy

    Thomy Jungspund

    Dabei seit:
    20.10.2005
    Beiträge:
    21
    Zustimmungen:
    0
    Hi Leute

    Ich suche nach einer Möglichkeit, bei Shell-Scripting eine Date einzulesen, aber nur so, dass zwischen 2 Markierungen eingelesen wird. Ich brauch den kompletten Inhalt, damit ich ihn weiterverwenden kann (sed, grep....):

    Blablablub
    #A
    das
    hier
    ist
    wichtig
    #E

    Also es soll nur zwischen #A und #E eingelesen und ausgegeben werden. Wie geht denn das?


    Gruß Thomy
     
  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, 19.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    sed kann das
    Code:
    sed -ne '/anfangsmarke/,/endmarke/p' file
    
    Beides muss eindeutig sein!

    siehe man sed

    Wolfgang
     
  4. #3 Gott_in_schwarz, 19.02.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    hm, was ich mich ja schon öfters gefragt habe: gibts einen einfachen "nicht-workaround" weg, um die adressen selbst rauszulassen?

    also exklusive "#A" und "#E" hier im beispiel?

    krüppelige workarounds wären zum beispiel:
    Code:
    sed -ne "/#A/,/#B/p" datei | head -n -1 | sed -ne '1!p'
    wobei das schön recht krüppelig ist. schade, dass tail den "trick" mit den negativen zeilenzahlen scheinbar nicht kann.
    man könnte es natürlich auch einfach mit "egrep -v" machen, oder mit 2 sed befehlen mit negierten adressen:
    Code:
    cat datei | sed -ne '1,/#A/!p' | sed -ne '/#E/,$!p'
    uuoc, ich weiß. aber ich finde so sieht das besser strukturiert aus (als ohne cat..).

    gibts da nicht irgendeine sed option ala "bearbeitung exklusive adressen", also das man mit den adressen nur den "rand" angibt?
    :?
     
  5. #4 Wolfgang, 19.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Nein, das musst du dir basteln.
    Dazu nehmen wir Label hier l
    Hier am Beispiel (ungetestet):
    Code:
    $ sed -e :l -e '/#A/D;N;/#E/!b l;s/\n#E//;q' datei 
    
    Gruß Wolfgang
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Einlesemarkierungen