• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

frage zu sed

flyingt

Member
Hi,

habe ein kleines problem was die shell-syntax betrifft.
habe einen string in einer Variablen abgespeichert, welches ich auf vollständigkeit überprüfe.
in der variablen steht die die straße und stadt, nun muß ich prüfen ob die variable eine hausnr. enthält. wenn nicht soll nachträglich die hausnr. 1 vergeben werden.
mit "sed" möchte ich die hausnr. 1 anfügen, fals keine vorhanden ist, deshalb die vielen möglichkeiten: str, allee, weg, ....

Code:
#!  /bin/bash
start=BahnhofstrBerlin
if [[0-9] !== $start];    
then
sed 's/(straße|strasse|str.|str|Straße|Strasse|Str.|Str|weg|Weg|allee|Allee)/ & 1/g' $start>$start

komme leider nicht weiter,
kann ich meine änderung dann in die gleiche variable überschreiben ?

über eure hilfe wäre ich euch dankbar

gruß flyingt
 

regexer

Advanced Hacker
flyingt schrieb:
komme leider nicht weiter,
kann ich meine änderung dann in die gleiche variable überschreiben ?
Ich nehme nur ungerne sämtliche Illusionen, aber da kommst du so wirklich nicht weiter.
Was machst du zum Beispiel mit der "Straße des 17. Juni"? Oder mit der "Straße der Nationen". Oder mit dem Straßennamen "Bergmahd"? Oder mit dem Straßennamen "Am Wald" Oder mit kleinen Kuh-Nestern, die Überhaupt keinen Straßennahmen haben?

Deswegen: Für Straße, Hausnummer, Postleitzahl, Ort immer getrennte Felder nehmen.
 

TeXpert

Guru
Efchen schrieb:
Nein, wenn Du mit sed versuchst, in die selbe Variable oder die selbe Datei zu schreiben, ist anschließend alles weg. :)

das gilt nicht für GNU sed, wie ein schneller Blick in das Manual (aka info sed) zeigt -> -i ist Dein Freund)
 

Efchen

Newbie
Oh, gut das zu wissen :)
Tja, es ändern sich viele Dinge im Laufe der Jahre.

Ich erinnerte mich nur daran, wie ich vor langer, langer Zeit den Output von sed in die selbe Datei geschrieben habe, und das dann in einer foreach-Schleife auf mehrere Hundert Dateien angewendet habe...deswegen kam mein Tipp so überzeugt rüber :)

Danke für die Info,
-Efchen
 
OP
flyingt

flyingt

Member
Hi,

notoxp schrieb:
Für Straße, Hausnummer, Postleitzahl, Ort immer getrennte Felder nehmen.

hast recht muß ich auf jeden fall berücksichtigen.

danke für die tipps, ist echt klasse das forum


gruß flyingt
 

regexer

Advanced Hacker
Efchen schrieb:
Nein, wenn Du mit sed versuchst, in die selbe Variable oder die selbe Datei zu schreiben, ist anschließend alles weg. :)
Auch das mit der Varialbe lässt sich bestreiten:
Code:
> test=string
> echo $test
string
> test=`echo $test | sed 's/tr//'`
> echo $test
sing
 

Efchen

Newbie
Wie gesagt, vor ca. 14 Jahren war es noch so ;-)
Und Dinge, die solch fatale Fehler zur Folge hatten, probiert man auch nach 10 Jahren nicht nochmal aus ;-)

Gruß,
-Efchen
 

TeXpert

Guru
insbesondere aber die Variablen Situation ist ja wohl zu erwarten :) das Verhalten ist bei jeder mir spontan einfallenden Programmiersprache so (stichworte, L-Value, R-Value und Co)

Wir haben hier die Situation, dass wir keine konkurrierenden Lese&Schreibzugriffe auf eine Datei haben. Wenn es vor n jahren da einmal zu Problemen gekommen sein sollte, dann liegt das IMHO nicht an sed sondern an der Umgebung, also der damals verwendeten Shell
 
Oben