[SHELL]TXT File einlesen und bestimmtes Wort in $Var speichern



  • Guten Abend!

    Hab mal eine kurze Frage. Habe ein Shell Skript das mir einen String in einer Textdatei speichert.

    </texts/standort.txt sed -e "s/Location://g" >/texts/position.txt
    
    ################SPEICHERN DES ORTES IN $LOC################
    </texts/position.txt grep '\<ORT_A\>' >LOC
    echo Hallo $LOC
    

    Im oberen Teil wird die Datei Standort.txt so manipuliert, dass im endeffekt nur ein Wort übrig bleibt. Nämlich ORT_A das speichert der nun ab in position.txt
    So weit klappt auch alles. Jetzt würde ich aber gerne den ORT_A im selben Skript wieder in einer Variable ablegen - $LOC. Wie geht das? Im Nezt find ich irgendwie nichts passendes oder es klappt nicht.
    Weiß jemand vielleicht weiter ?

    Danke und schönes Wochenende !!

    Gruß,

    Dirk



  • Ich kapier ehrlich gesagt die Frage nicht. Haette geholfen wenn du ein Stueck standort.txt gepostet haettest, und vielleicht mehr danach gefragt haettest was du eigentlich erreichen willst.

    Schau dir die Hilfe zu read an. (sollte in builtin(1) stehen.)

    --
    Andreas

    PS: Wo hast die komische Variante her, "<stdinumleitung kommando" zu schreiben? Das is zumindest unueblich.



  • Also in standort.txt steht eigentlich nur das drin:
    Location:ORT_A - mehr nicht.
    Mit sed wird dann "Location:" gelöscht und es bleibt ORT_A übrig. Das Ort_A wird nun in einem zweiten TXT File gespeichert das position.txt heißt.
    Im zweiten Teil wird dann aus der Datei position.txt mit grep der String ORT_A rausgelesen. Da ist der Punkt wo ich nicht weiterkomme. Nämlich das ausgelesen ORT_A in einer Variablen abzuspeichern damit ich diese dann weiter unten in meinem Skript wieder einsetzen kann.

    Das mit der Umleitung war Zufall - und weil es geklappt hatte hab ich es so gelassen 😉 .Aber lasse mir gerne bessere Varianten zeigen.

    mit echo will ich mir nur ausgeben lassen ob oben alles geklappt hatte, hat also für das Skript eigentlich keine Bedeutung.

    Hoffe man kann jetzt verstehen was ich meine 🕶



  • Nehmen wir an du hast die position.txt mit den ORT_XXXX, dann ginge zum Beispiel sowas:

    #/bin/sh
    
    while read LOC; do
      echo $LOC;
    done <position.txt
    

    Andere Variante, die dein grep nutzt:

    LOC=`grep ORT_A position.txt`
    

    Ich nehme mal an es hat nen Grund warum du standort.txt erst nach position.txt transformierst, falls das aber nur ein Workaround war, was haelst du hiervon:

    #!/bin/sh
    
    save_IFS=$IFS
    IFS=:
    while read l loc; do
            echo $loc;
    done <standort.txt
    IFS=$save_IFS
    

    (IFS ist der feldtrenner, normalerweise is er space,tab,newline, aber man kann ihn natuerlich auch mal auf ':' setzen).

    HTH,
    Andreas

    Devender schrieb:

    Das mit der Umleitung war Zufall - und weil es geklappt hatte hab ich es so gelassen 😉 .Aber lasse mir gerne bessere Varianten zeigen.

    Bessere Varianten...nuja:

    command <in >out 2>error_out
    

    Das is nicht "besser" (es is genau das gleiche von der Wirkung her), aber ueblicher und weniger verwirrend 🙂


Anmelden zum Antworten