Hallo, ich versuche ein Shell Script zu schreiben und würde gerne aus einer Datei einen Wert in eine andere Datei schreiben. Mit 'more <dateiname> | grep <Wert>' finde ich die Zeile, in der die gewünschten Angaben stehen. Nämlich: 'Der gesuchte Wert steht hier 20.000 2.536' Jetzt würde ich gerne die 2.536 als Wert in eine andere Datei schreiben. Kann mir jemand sagen, wie ich das mache? Mit dem cut-Befehl konnte ich die entsprechende Position in der Zeile finde (eine weitere pipe ...| cut -b 44-48), aber ich würde ihn lieber anhand von zusammenhängenden Zeichen finden, da aufgrund von mehr oder weniger Stellen auch die Position oder die Anzahl der Leerzeichen mal variieren kann. Kennt jemand einen passenden Befehl, der mir da weiterhilft? Danke schonmal tressi -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi tressi74! On Fri, 04 Apr 2008, tressi74 wrote:
Hallo,
ich versuche ein Shell Script zu schreiben und würde gerne aus einer Datei einen Wert in eine andere Datei schreiben. Mit 'more <dateiname> | grep <Wert>' finde ich die Zeile, in der die gewünschten Angaben stehen. Nämlich: 'Der gesuchte Wert steht hier 20.000 2.536' Jetzt würde ich gerne die 2.536 als Wert in eine andere Datei schreiben. Kann
Wert=`grep Wert datei |awk '{print $NF}'` Und dann kannst du die Variable $Wert irgendwohin schreiben: echo "$Wert" >> datei (z.B. um den Wert an Datei anzuhängen. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 112. You are amazed that anyone uses a phone without a modem on it...let alone hear actual voices. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fre, 04 Apr 2008, Christian Brabandt schrieb:
On Fri, 04 Apr 2008, tressi74 wrote:
ich versuche ein Shell Script zu schreiben und würde gerne aus einer Datei einen Wert in eine andere Datei schreiben. Mit 'more <dateiname> | grep <Wert>' finde ich die Zeile, in der die gewünschten Angaben stehen. Nämlich: 'Der gesuchte Wert steht hier 20.000 2.536' Jetzt würde ich gerne die 2.536 als Wert in eine andere Datei schreiben. Kann
Wert=`grep Wert datei |awk '{print $NF}'` Und dann kannst du die Variable $Wert irgendwohin schreiben:
*PATSCH* Greppen kann awk selber. awk '/Wert/{print $NF;}' datei und auch ausgeben oder direkt in eine Datei schreiben: awk '/Wert/{print $NF;}' datei > ausgabedatei awk '/Wert/{print $NF > "ausgabedatei";}' datei HTH, -dnh -- "I think there is a world market for maybe five computers." -- Thomas Watson, chairman of IBM, 1943. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi David! On Fri, 04 Apr 2008, David Haller wrote:
Am Fre, 04 Apr 2008, Christian Brabandt schrieb:
Wert=`grep Wert datei |awk '{print $NF}'` Und dann kannst du die Variable $Wert irgendwohin schreiben:
*PATSCH*
Aua...
Greppen kann awk selber.
Ich weiß, alte Angewohnheit ;) Ich versuch schon lange, mir das abzugewöhnen. Mit mäßigem Erfolg wie man sieht.
awk '/Wert/{print $NF;}' datei
und auch ausgeben oder direkt in eine Datei schreiben:
awk '/Wert/{print $NF;}' datei > ausgabedatei awk '/Wert/{print $NF > "ausgabedatei";}' datei
Ist bekannt. Hab nur nicht zuende gedacht, als ich geantwortet habe, weil ich in Eile war... (zählt das als Ausrede ;)) Interessant in dem Zusammenhang: http://www.netmeister.org/misc/useless_use.pdf Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 113. You are asked about a bus schedule, you wonder if it is 16 or 32 bits. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller schrieb:
Hallo,
Am Fre, 04 Apr 2008, Christian Brabandt schrieb:
On Fri, 04 Apr 2008, tressi74 wrote:
ich versuche ein Shell Script zu schreiben und würde gerne aus einer Datei einen Wert in eine andere Datei schreiben. Mit 'more <dateiname> | grep <Wert>' finde ich die Zeile, in der die gewünschten Angaben stehen. Nämlich: 'Der gesuchte Wert steht hier 20.000 2.536' Jetzt würde ich gerne die 2.536 als Wert in eine andere Datei schreiben. Kann
Wert=`grep Wert datei |awk '{print $NF}'` Und dann kannst du die Variable $Wert irgendwohin schreiben:
*PATSCH*
Greppen kann awk selber.
awk '/Wert/{print $NF;}' datei
und auch ausgeben oder direkt in eine Datei schreiben:
awk '/Wert/{print $NF;}' datei > ausgabedatei awk '/Wert/{print $NF > "ausgabedatei";}' datei
HTH, -dnh
Hallo nochmal, vielen Dank für die Tips, der obige macht das was ich will. Kannst Du mir auch verraten, wie ich die Bildschirmausgabe, oder den Wert der Ausgabedatei in eine Variable umwandele? Nach dem Prinzip: 'set variable = Wert' Grüße tressi -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fre, 04 Apr 2008, tressi74 schrieb:
David Haller schrieb:
awk '/Wert/{print $NF;}' datei [..] vielen Dank für die Tips, der obige macht das was ich will. Kannst Du mir auch verraten, wie ich die Bildschirmausgabe, oder den Wert der Ausgabedatei in eine Variable umwandele? Nach dem Prinzip: 'set variable = Wert'
==== #!/bin/bash variable="$(awk '/Wert/{print $NF;}' datei)" echo "${variable}" ==== Allerdings kann awk auch noch einiges mehr, evtl. kannst du den Rest auch gleich in awk erledigen... -dnh -- Error in operator: add beer -- BSD fortune file -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag 04 April 2008 schrieb David Haller:
Hallo,
Am Fre, 04 Apr 2008, tressi74 schrieb:
David Haller schrieb:
awk '/Wert/{print $NF;}' datei
[..]
vielen Dank für die Tips, der obige macht das was ich will. Kannst Du mir auch verraten, wie ich die Bildschirmausgabe, oder den Wert der Ausgabedatei in eine Variable umwandele? Nach dem Prinzip: 'set variable = Wert'
==== #!/bin/bash variable="$(awk '/Wert/{print $NF;}' datei)" echo "${variable}" ====
Allerdings kann awk auch noch einiges mehr, evtl. kannst du den Rest auch gleich in awk erledigen...
-dnh
-- Error in operator: add beer -- BSD fortune file
Das Problem zu dem Shell Script konnte gelöst werden, ich danke nochmal allen, die einen Vorschlag hatten. Der obige Vorschlag funktioniert mit bash. Für die, die ähnlich Probleme haben und mit tcsh arbeiten: set variable=`awk '/WERT/{print $NF}' datei` Wobei zu beachten ist, dass vorne und hinten zwei "accent grave" verwendet werden. Bis demnächst. tressi -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Montag, 7. April 2008 17:04 schrieb tressi74:
Wobei zu beachten ist, dass vorne und hinten zwei "accent grave" verwendet werden.
Auch gennant "Backticks"... -- Michael Herrmann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Michael Herrmann schrieb:
Hallo,
Am Montag, 7. April 2008 17:04 schrieb tressi74:
Wobei zu beachten ist, dass vorne und hinten zwei "accent grave" verwendet werden.
Auch gennant "Backticks"...
Von den Backticks würde ich abraten, da diese nicht immer so ganz korrekt angezeigt werden. wie von David richtig vorgeführt empfiehlt es sich die folgende Schreibweise zu benutzen, da dies sauberer ist. also mit "$( .....befehl.... )" variable="$(awk '/Wert/{print $NF;}' datei)" -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo
Kannst Du mir auch verraten, ...
Ich kann dir zu deinen Fragen und deinen Mails folgende Seite empfehlen: http://www.tldp.org/LDP/abs/html/index.html Roman -- Roman Fietze Telemotive AG Büro Mühlhausen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo,
ich versuche ein Shell Script zu schreiben und würde gerne aus einer Datei einen Wert in eine andere Datei schreiben. Mit 'more <dateiname> | grep <Wert>' finde ich die Zeile, in der die gewünschten Angaben stehen. Nämlich: 'Der gesuchte Wert steht hier 20.000 2.536' Jetzt würde ich gerne die 2.536 als Wert in eine andere Datei schreiben. Kann mir jemand sagen, wie ich das mache? Mit dem cut-Befehl konnte ich die entsprechende Position in der Zeile finde (eine weitere pipe ...| cut -b 44-48), aber ich würde ihn lieber anhand von zusammenhängenden Zeichen finden, da aufgrund von mehr oder weniger Stellen auch die Position oder die Anzahl der Leerzeichen mal variieren kann.
ich würde folgendes machen: grep <Wert> Datei |tr -s ' ' |cut -d' ' -f x >datei2 tr -s ' ' macht aus mehreren aufeinanderfolgenden Blanks ein Blank und cut -d' ' zerhackt dann das Ergebnis in einzelne Felder - für x muß jetzt noch angegeben werden, das wievielte Feld gemeint ist! eine weitere Möglichkeit wäre set (ein eingebauter Befehl der Bash - also schneller als die obige Pipe): set ($grep <Wert> Datei) ; echo $5 set zerhackt die gefundene Zeile an den sog White Spaces also Blank u. Tab und gibt das 1. Feld in $1, das 2. in $2 usw. zurück! Grüße Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo,
set ($grep <Wert> Datei) ; echo $5 Ich seh' gerade da ist ein Buchstabendreher! Es muß natürlich so hießen: set $(grep <Wert> Datei) ; echo $5
Sorry Mike -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (7)
-
Axel Birndt
-
Christian Brabandt
-
David Haller
-
Michael Herrmann
-
Mike Philipp
-
Roman Fietze
-
tressi74