textstellen aus datei raussuchen und in in neue datei verschieben.

H

/home/user

Grünschnabel
Hallo,

ich habe ein kleines program das mir ne Log in der Art ausgibt (natürlich sind so über 40-50 Einträge drin.)
savedfiles=1 forbiddenfiles=0 premiumaccount=0 freeowner=3255551289
File1.1=http://url.com/adresse1.htm
File1.2=http://url.com/adresse1.htm?killcode=10657490975157685493
File1.3=1024
File1.4=1CFB1XXXEACB3867DCDBCDB6755BF
File1.5=Completed

savedfiles=1 forbiddenfiles=0 premiumaccount=0 freeowner=3255551289
File1.1=http://url.com/adresse2.htm
File1.2=http://url.com/adresse2.htm?killcode=10657490975157685493
File1.3=1024
File1.4=1CFB10XX17FE8EACB3867DCDBCDB6755BF
File1.5=Completed

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=Completed

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.!
 
Zuletzt bearbeitet:
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
 
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 :-/
 
Zuletzt bearbeitet:
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
 
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 )


http://picload.org/image/woccd/unbenannt-2.gif

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..

http://picload.org/thumbnail/wocco/oreilylinnut-seite1.jpg


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

Schönes Wochenende Euch.
 
Zuletzt bearbeitet:
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
 

Ähnliche Themen

Textformatierung nach Cut "\" nach jeder Zeile?

NagiosGrapher 1.7.1 funktioniert nicht

Mein Server versendet SPAM in Massen

Squid als RPCoHTTPS Proxy für Outlook Anywhere

curl: (7) couldn't connect to host

Zurück
Oben