Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Bashscript: Teil aus Textdatei in Variable speichern

  1. #1
    de_dani
    Gast

    Bashscript: Teil aus Textdatei in Variable speichern

    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!

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Das geht bei mir - probier mal:

    Code:
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    de_dani
    Gast
    merci! funktioniert bestens!!

  4. #4
    Registrierter Benutzer Avatar von dilindam
    Registriert seit
    21.01.2004
    Beiträge
    15
    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

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.08.2005
    Beiträge
    45
    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.
    Geändert von boba (26-02-2006 um 20:48 Uhr)

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Registrierter Benutzer
    Registriert seit
    07.08.2005
    Beiträge
    45
    das hier ist der relevante absatz:

    Code:
     
     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
    Code:
    #!/bin/bash
    TEST=$(cat [Rr][Ee][Aa][Dd][Mm][Ee]|grep kick*)
    
    if (( "$TEST" = NULL ));then
    echo "nix gefunden"
    fi
    
    exit 0
    Geändert von boba (27-02-2006 um 11:18 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    so sollte es gehen
    Code:
    if grep -qE "kick40069.A1212|kick40069.A4012|kick34006.A512" kick.txt; then echo "gefunden"; fi
    religion is a virus from outer space

  10. #10
    Registrierter Benutzer
    Registriert seit
    07.08.2005
    Beiträge
    45
    es tuts.

    danke

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •