PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bashscript: Teil aus Textdatei in Variable speichern



de_dani
18-02-2006, 13:44
Guten Tag!

Ich würde gerne ein Bashscript schreiben, das mir aus einer Textdatei einen Teil in einer Variable (String) speichert.
Also eigentlich:
a=<Zeile5;Zeichen10bis20>

Ich habe keine Ahnung vom scripten und wäre darum um eine Komplettlösung sehr dankbar! :)

Merci!

peschmae
18-02-2006, 15:18
Das geht bei mir - probier mal:


VARIABLE=$(sed -n -e "5s#^.\{10\}\(.\{10\}\).*\$#\1#" -e 5p datei.txt)

Die 5 vor dem s und dem p bedeutet dass sich die jeweiligen Kommandos nur um Zeile 5 kümmern (p gibt die Zeile aus, s macht die Ersetzung).

Die erste 10 bedeutet "die ersten 10 Zeichen der Zeile" und die zweite 10 die nächten 10 Zeichen der Zeile.

MfG Peschmä

de_dani
19-02-2006, 16:04
merci! funktioniert bestens!!

dilindam
23-02-2006, 12:52
Hallo,

so etwas ähnliches habe ich auch vor. Nur etwas komplizierter.
Ich habe hier den output eines perl skriptes.

$VAR1 = {
'value' => {
'32' => {
'interventionType' => 'Reboot HARD',
'alertLevel' => '2',
'interventionTypeEn' => 'HARD Reboot',
'id' => '32',
'comments' => 'Monitoring'
},
'33' => {
'interventionType' => 'V<E9>rification des infos en base',
'alertLevel' => '0',
'interventionTypeEn' => 'DB value check',
'id' => '33',
'comments' => 'Monitoring'
},

usw.
Ich möchte die id's mit dem dazugehörigen interventionTypeEn in eine DB speichern.

Wie könnte ich das realiesieren? Ist das genauso gut möglich mit sed?
Das mit der Zeilennummer funktioniert, nur weiss ich ja nicht wie lang die Datei ist. Ich denke mal die aendert sich auch mal.


MfG Torsten

peschmae
23-02-2006, 17:50
Nur die IDs kriegst du z.B. mit sed -n -e '/id/s/.*=> '\''\(.*\)'\''.*/\1/p' respektive nur die interventionTypeEns mit sed -n -e '/interventionTypeEn/s/.*=> '\''\(.*\)'\''.*/\1/p' - was ich dann nicht weiss ist wie du das Ding in ne Datenbank kriegst.

MfG Peschmä

boba
26-02-2006, 20:31
ich hoffe ich darf auch noch...

Aus einem Readme muss ich eine Eigenschaft rausziehen, irgentwo im Text kommt einmal oder auch öfters ein Begriff vor, anhand dieses Begriffes soll dann eine Aktion ausgeführt werden(sollte kein problem für mich sein).
Ich habe versucht die obigen beispiel umzubauen, ohne erfolg.
Der gesuchte String hat eigentlich immer die Form "bla423423.a432" inklusive der Anführungsstriche! Der darin enthaltene String ist die Datei die kopiert werden sollte. Im ganzen gibt es nur 3 verschiedene strings.

peschmae
27-02-2006, 10:49
Hast du mal eine Beispieldatei mit was genau gematcht werden soll und was dann da rauskommen müsste. Ist mir noch nicht ganz 100%ig klar wie das geht.

Ich meine: bla423 - ist das immer drei Buchstaben, 6 Zahlen, ...

MfG Peschmä

boba
27-02-2006, 11:09
das hier ist der relevante absatz:



must be named "kick34006.A512". The image can be extracted from a A512 with
tools like 'GrabKick' or similar which can be found on somewhere.

dies hier die 3 möglichen strings
kick40069.A1212
kick40069.A4012
Kick34006.A512

Leider sind die Textdateien immer anders aufgebaut, es kann schon passieren das davor eine Seite
Text steht.

ich hatte schon versucht das mit einem grep zu machen, wenn ein grep auf eine der dreien == 0 ist kommt der string nicht vor, hat aber leider nicht wirklich geklappt


#!/bin/bash
TEST=$(cat [Rr][Ee][Aa][Dd][Mm][Ee]|grep kick*)

if (( "$TEST" = NULL ));then
echo "nix gefunden"
fi

exit 0

ninguno
27-02-2006, 11:56
so sollte es gehen
if grep -qE "kick40069.A1212|kick40069.A4012|kick34006.A512" kick.txt; then echo "gefunden"; fi

boba
27-02-2006, 12:25
es tuts.

danke