textstellen aus datei raussuchen und in in neue datei verschieben.

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von /home/user, 27.11.2009.

  1. #1 /home/user, 27.11.2009
    Zuletzt bearbeitet: 27.11.2009
    /home/user

    /home/user Grünschnabel

    Dabei seit:
    03.11.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo,

    ich habe ein kleines program das mir ne Log in der Art ausgibt (natürlich sind so über 40-50 Einträge drin.)
    Wie bekomme ich es hin das die letzten 4 Textblöcke mit deren Einträgen (von File1.1 bis File1.5) nur der Url-Eintrag von File1.1 extrahiert wird und in einer neuer Textdatei verschoben wird, vorausgesetzt wenn File1.5 "completed" ist?

    Mein Schleifenbau blicke ich selbst nicht mehr so durch so als Laie. Dann habe ich es versucht daraus eine Variable zu machen und am Ende in einen Abwasch ineine neue Textdatei ">" zu schieben. Bin natürlich gescheitert. :-(((

    Könnt ihr mich bitte in die Richtige Lernrichtung schubsen wie ich am besten vorgehen sollte?
    Ich habe mich schon dran versucht mich anhand folgender Threads durch zu hangeln
    http://www.unixboard.de/vb3/showthread.php?t=25232
    http://www.unixboard.de/vb3/showthread.php?t=26392

    Aber so recht weiss ich nicht mal was ich tue weil es an Grundlagen fehlt.
    Tut mir leid das ich Euch belaste aber wäre um jede Hilfe froh.!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 HeadCrash, 27.11.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Morgen,

    ist doch im Grunde ganz einfach.

    Du schnappst dir irgend eine belibige skript-Sprache.
    Öffnest die Datei und arbeitest sie Zeilenweise ab.
    Die Zeile "File1.1=http...." merkst du dir in einer Variable
    und prüfst dann ob die Zeile "File1.5=Completed".
    Wenn ja läßt du oben deine Variable mit "File1.1=..." ausgeben.
    Falls nicht, lässt du es bleiben.

    mfg
    HeadCrash
     
  4. #3 /home/user, 27.11.2009
    Zuletzt bearbeitet: 27.11.2009
    /home/user

    /home/user Grünschnabel

    Dabei seit:
    03.11.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Nun ja der Lösungsansatz war ja erst mein Gedankengang, aber es haut mit der Umsetzung nicht hin :-/
    Egal mit welcher beliebigen Sprache, ich kann keine, geschweige denn richtig.

    Ich habe mir gedacht ich suche in einer Zeile "File1.1=http://"
    und dann suche mir raus was bis Zeilenende ist, weil das dazwischen sich ändern kann. Anschließend packe ich das in eine Variable.
    Und das sind schon 2 Sachen die ich nicht kann :-/
     
  5. #4 HeadCrash, 27.11.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Veruschs mal hiermit.

    Das fällt zwar definitiv in die Kategorie selten, aber nicht schön :)
    Code:
    $ cat dummy.txt
    savedfiles=1 forbiddenfiles=0 premiumaccount=0 freeowner=3255551289
    File1.1=http://url.com/adresse3.htm
    File1.2=http://url.com/adresse3.htm?killcode=9980209972210204232
    File1.3=1024
    File1.4=B7FFA053866EE5DD17D5C850EB0A2A87
    File1.5=Completed
    
    savedfiles=1 forbiddenfiles=0 premiumaccount=0 freeowner=3255551289
    File1.1=http://url.com/adresse4.htm
    File1.2=http://url.com/adresse4.htm?killcode=9980209972210204232
    File1.3=768
    File1.4=B7FFA053866EE5DD17D5C850EB0A2A87
    File1.5=Working
    
    $ grep "File1." dummy.txt |  while read line; do 
    [ ! -z '${line}' ] && [ ${line:0:8} == "File1.1=" ] && rememberme=${line:8} ; 
    [ ! -z '${line}' ] && [ ${line} == "File1.5=Completed" ] && echo ${rememberme}; 
    done
    
    http://url.com/adresse3.htm
    
    Zum Thema "ick kann keine, geschweige denn richtig"
    Richtig kann ich auch keine. Aber das ist etwas was sich mit den Suchbegriffen
    Datei Zeilenweise und Substring anlesen lässt, sowieso wenn ein bisschen Grundwissen vorhanden ist. Sei das jetzt perl, php oder sonstwas

    Schönes Wochenende
    HeadCrash
     
  6. #5 /home/user, 28.11.2009
    Zuletzt bearbeitet: 28.11.2009
    /home/user

    /home/user Grünschnabel

    Dabei seit:
    03.11.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Danke dir HeadCrash für dein Lösungsansatz ich habe nun 2 Tage Zeit das was du geschrieben hast für Dummies zu übersetzen bzw. nachzuvollziehen was Du da genau gemacht hast.

    Grep kannte ich zwar schon aber rememberme kannte ich nun wieder nicht.
    Aber irgendwo muss man ja mal anfangen.
    vielen Dank Dir!
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    So frisch vom Flohmarkt und wieder zu Hause :-) [ Meine Frau ist noch dort aber mir war kalt :D]

    Und das habe ich mir für 5 Euro gekauft.

    (Auf den Buchrücken steht folgender Org-Preis
    DEM 69,00
    Euro 36,00
    ATS 504,00
    sind teuer geworden )


    [​IMG]

    Ist zwar die dritte Auflage von 2001 aber ich denke soviel hat sich wohl in Kapitel 3,7 und 9 nicht geändert.

    Hier mal ein Auszug von der Seite der Variablen... ich hoffe ihr habt Nachsehen mit dem schlechten Scan. Und verstosse nicht gegen eine Copyrightregel. Ich bin ja einfach nur voller Freude..

    [​IMG]


    Nun ich hoffe ich muss weniger fragen. Wenn doch, dann sind es bestimmt schon qualifizierte :))

    Schönes Wochenende Euch.
     
  7. #6 HeadCrash, 28.11.2009
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Freut mich das du dich mit dem Thema noch ein bisschen beschäftigen willst.

    Zu dem Zeichensalat den ich da verfasst habe, wie schon gesagt nicht unbedingt die schönste Lösung für das Problem aber sie geht.

    Zeile für Zeile:
    Code:
    $ grep "File1." dummy.txt |  while read line; do 
    
    grep durchsucht die Datei dummy.txt nach Zeilen die die Zeichenkette "File1." entahlten und gibt diese aus.
    Die Pipe "|" gibt das ganze an eine while-Schleife die jeweils wieder eine Komplette Zeile einliest und in der Variablen $line speichert.
    Code:
    [ ! -z '${line}' ] && [ ${line:0:8} == "File1.1=" ] && rememberme=${line:8} ; 
    
    Der erste Teil zwischen den eckigen Klammern schaut ob die Variable $line nicht leer ist. Das && sorgt dafür, dass die nächste Anweisung nur ausgeführt wird wenn die vorherige erfolgreich war. Die zweiten eckigen Klammern schauen nach ob die ersten 8 Zeichen der Variablen $line mit "File1.1=" übereinstimmen.
    Falls das der Fall ist wir in der Variablen $rememberme ab der 8 Stelle alles zugewiesen, was in $line steht. In diesem fall "http://..."
    Code:
    [ ! -z '${line}' ] && [ ${line} == "File1.5=Completed" ] && echo ${rememberme}; 
    done
    
    Hier passiert fasst das gleiche wie oben. Es wird geschaut ob die Variable nicht leer ist, danach wird Kontrolliert ob in $line "File1.5=Completed" steht. Falls das der Fall ist, wird das ausgegeben was in $rememberme steht.

    Falls du noch fragen dazu hast, shcick mir ne PM.

    Schönes Wochenende
    HeadCrash
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

textstellen aus datei raussuchen und in in neue datei verschieben.

Die Seite wird geladen...

textstellen aus datei raussuchen und in in neue datei verschieben. - Ähnliche Themen

  1. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  2. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  3. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...
  4. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  5. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...