Inhalt von 3 Files in eines

S

seraph

Jungspund
Hallo
ich hoffe ich kan mein problem einfach erklären.

ich habe 2 Dateien, in der einten Datei sagen wir strassen.txt, sind strassennamen eigetragen:

muellerstrasse
meierstrasse


in der 2 Datei sind namen und spitznamen eingetragen

meier lillard
mueller xxx


wie kan ich jetzt ein output file aus deisen bveiden erstellen lassen, welches dann so ausehen sollte:

meier muellerstrasse lillard
meier meierstrasse lillard
mueller muellerstrasse xxx
mueller meierstrasse xxx


danke für die hilfe
 
Code:
cat namen.txt | while read name nick; do cat strassen.txt | while read strasse; do echo $name $strasse $nick; done; done

Gruss, Xanti
 
hallo danke
das würde funktionieren, aber was ist wenn ich im namen.txt noch mehr parameter habe zb:

meier lillard 23-10-1976

und es soll dann so aussehen?

meier muellerstrasse lillard 23-10-1976
meier meierstrasse lillard 23-10-1976

kann ich hierr nicht so arbeiten irgendwie im file selber:
meier $strasse lillard 23-10-1976
 
Mein Code funktioniert auch für Dein modifiziertes namen.txt.
 
ja stimmt sorry hihih, jetzt muss ich das nur noch in ein bestehdnen script einbauen können, weist du evtl... warum es so funktioniert:

Code:
for HOST in $@
do
    . $ETC/${HOST}_global.cfg
    if [ -f $VAR/global_${HOST}.cfg ]
    then
        $RM $VAR/global_${HOST}.cfg
    fi
    $CAT $ETC/global_.cfg | while read LINE
    do
        eval $LINE >> $VAR/global_${HOST}.cfg
    done
done

aber so nicht mehr?
Code:
for HOST in $@
do
    . $ETC/${HOST}_global.cfg
    if [ -f $VAR/global_${HOST}.cfg ]
    then
        $RM $VAR/global_${HOST}.cfg
    fi
    $CAT $ETC/global.cfg | while read LINE
    $CAT $ETC/config.cfg | while read name config
    $CAT $ETC/scopenames.cfg | while read scopename
    do
        eval $LINE $name $scopename $config >> $VAR/global_${HOST}.cfg
    done
done

kommt:
syntax error at line 105 : `done' unexpected
 
Ja, Du machst zwei while-Schleifen auf, führst sie aber nicht zu ende. Eine while-schleife sieht so aus:

Code:
while <Bedingung>; do
...
done

Dein Code müsste so aussehen:

Code:
for HOST in $@
do
    . $ETC/${HOST}_global.cfg
    if [ -f $VAR/global_${HOST}.cfg ]
    then
        $RM $VAR/global_${HOST}.cfg
    fi
    $CAT $ETC/global.cfg | while read LINE; do
      $CAT $ETC/config.cfg | while read name config; do
        $CAT $ETC/scopenames.cfg | while read scopename; do
           eval $LINE $name $scopename $config >> $VAR/global_${HOST}.cfg
        done
      done
    done
done

Gruss, Xanti
 
ah alles klar danke :-)

der output ist aber nicht so wie ich es möchte, naja egal, werde sonst irgendwie anders machen müssen, von hand die beiden outputs zusammen fügen, trotzdem nochmals danke
 
Muss es ein shell script sein oder kann es auch in python sein? :)
 
ja muss shell sein,.. aber kan so ja gar nicht funlktionieren, hmm aber die lösung?

original code:

Code:
for HOST in $@
do
    . $ETC/${HOST}_global.cfg
    if [ -f $VAR/global_${HOST}.cfg ]
    then
        $RM $VAR/global_${HOST}.cfg
    fi
    $CAT $ETC/global_.cfg | while read LINE
    do
        eval $LINE >> $VAR/global_${HOST}.cfg
    done
done


der gibt ein output file was auch funktioniert, jetzt möchte ich meinen code zusätzlioch unten an diesem file noch einfügen, aber so wie ich es gemacht habe, hängt er es an jede einzelne zeile an
 
seraph schrieb:
ah alles klar danke :-)

der output ist aber nicht so wie ich es möchte, naja egal, werde sonst irgendwie anders machen müssen, von hand die beiden outputs zusammen fügen, trotzdem nochmals danke

Zeig mal die drei Files und was rauskommen soll.

Gruss, Xanti
 
Hallo

Ich mag nur mal so anmerken, dass es dafür paste gibt.
paste [OPTIONEN] datei1 datei2 >>outputfile
man paste

Die Shell erlaubt viele Wege zum Glück, man kann sich auch den leichteren wählen. ;)
Um den Umgang mit Schleifen zu lernen, ist Xanti sein Vorschlag aber allemal gut.
Gruß Wolfgang
EDIT
Wenn du die Variblenreihenfolge wechseln willst, hängst du einfach noch eine while read dazwischen und tausche die Variablen
 
Zuletzt bearbeitet:
paste kannte ich noch nicht. Gleichmal anschauen :)

Gruss, Xanti
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Hilfe für ein shell script

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

Centos und Apache (VirtualHost)

3 letzte Zeile löschen oder ab Zeile 55 Muster suchen und löschen

Zurück
Oben