[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.)
--
AndreasPS: 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,
AndreasDevender 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