Einlesemarkierungen

T

Thomy

Jungspund
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
 
sed kann das
Code:
sed -ne '/anfangsmarke/,/endmarke/p' file
Beides muss eindeutig sein!

siehe man sed

Wolfgang
 
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?
:?
 
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?

gibts da nicht irgendeine sed option ala "bearbeitung exklusive adressen", also das man mit den adressen nur den "rand" angibt?
:?

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
 

Ähnliche Themen

Samba 3.6.25 - OpenLDAP Setup

Console I/O mit loggen

Verständnisfrage zu RegExps

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Zurück
Oben