TXT Datei"en" auslesen und bestimmte Werte in einer neuen datei ausgeben

iAlex7828

Grünschnabel
Hallo liebe Community,

ich bin ganz neu hier und auch wegen einem bestimmten Problem hier.
Ich habe mich im vorhinein schon durch unzählige Beiträge gewühlt, aber leider nichts passendes für meinen "Sonderfall" gefunden.

Im Prinzip möchte ich aus mehreren .txt dateien bestimmte Werte rausfiltern können und in einer neuen Text datei wiedergeben.
Leider hab ich nicht so viel ahnung vom programmieren, vor allem nicht von java und co. daher hoffe ich das ihr mich unterstützen könnt :)

Zum Hintergrund. Ich bekomme Täglich Arbeitsaufträge von meinem AG, diese Arbeitsaufträge sind leider "vollgemüllt" mit allem möglichen für mich unnützem zeug.
Ein Arbeitsauftrag ist hierbei eine .txt datei mit einem unbestimmten Namen. Der Name ist hierbei die Auftragsnummer.
Ich möchte nun gerne ein Skript schreiben was mir diese Arbeitsaufträge ausliest und bestimmte werte daraus in einer neuen Datei wiedergibt. Bestenfalls kann ich dabei die neue datei aufteilen wie es mir gefällt.

Unten findet ihr so einen Arbeitsauftrag. (ist ein wenig geschwärzt)
Der Auftraggeber wurde hierbei durch "ITGMBH" ersetzt.

Teilweise sind werte doppelt oder dreifach vorhanden.

Am liebsten würde ich die Infos aus allen "Aufträgen" dann in eine txt datei packen die dann schön aufgegliedert ist mit :


Auftrag 1 aus Dokument "AUFTRAGSNUMMER1_irgendwelchezahlen"

Auftragsnummer 1 : "AUFTRAGSNUMMER1"
Auftragsnummer 2 : "AUFTRAGSNUMMER2"
Auftragstyp : "AUFTRAGSTYP"
Gerät / Modell : "MODELL"
Serienummer : "SERIENNUMMER-11111111111111"
Firma/Name : "KUNDENFIRMA"
Straße : "KUNDENADRESSE 22"
Ort : "KUNDENORT BB DE KUNDENPLZ"
Telefon : "KUNDENTELEFON"
e-Mail : "KUNDENEMAIL@mail.com"

Teilenummern : "TEILENUMMER=1" "TEILENUMMER2=1" "TEILENUMMER3=2"

SR Notes : "Fehlerbeschreibung... ect"



Auftrag 2 aus Dokument "AUFTRAGSNUMMER1_irgendwelchezahlen"

............





Ist so etwas denn möglich ???

Schon mal vielen vielen vielen dank für eure hilfe :)

lg Alex


Code:
Arbeitgeber Cooperation









S E R V I C E  W O R K  O R D E R -  AUFTRAGSNUMMER1  8509205936

------------------------------------------------------------------------------

Entered: 02/04/2015 14:54     By: DTS

------------------------------------------------------------------------------

Model Number:7250-0100-9898

Serial No:              Type: Maintenance 3Not Urgent    Status: Assigned

Description: Equip Loc: ITGMBH/KUNDENFIRMA : S/N: XXXXXXXX-1111111111: MODELL MT : U: 1-Prts: Contact Email: kundenmail@mail.com: NBD - std call ; T:; SR: CT: 4-Low OS: Other Other SEV: 3-Medium (Full text in Problem Description Note)

Product Ref:

Caller: KUNDENNAME

Telephone: KUNDENTELEFON

Customer Reference: AUFTRAGSNUMMER2

------------------------------------------------------------------------------

Customer Code: xxxx



--- CUSTOMER ADDRESS ---               --- EQUIPMENT ADDRESS ---

  ITGMBH DE (GERMANY)                        ITGMBH DE (GERMANY)

  straßeunwichtigstraße10                KUNDENADRESSE 22 .

  ortunwichtig  DE plzunwichtig                KUNDENORT BB DE KUNDENPLZ



------------------------------------------------------------------------------



Request Date:  Project Arrival: 07/04/2015

Entry Time  : 02/04/2015 14:54            Time  : 16:00



Status:         Assigned

Technician name: tecid



------------------------------------------------------------------------------



Arrival Date:                   Intervention Delay: 07/04/2015 16:00

Arrival Time:                   Repair Delay:

Completion Date:             Job Time:   

Completion Time:             Travel Time:

------------------------------------------------------------------------------



Problem Description: Equip Loc: ITGMBH/KUNDENFIRMA : S/N: xxxxxxx-11111111: MODELL MT : U: 1-Prts: Contact Email: KUNDENMAIL@mail.com: NBD - std call ; T:; SR: CT: 4-Low OS: Other Other SEV: 3-Medium (Full text in Problem Description Note)





Remarks:

Task Notes: CE IS NOW id



SR Notes: Equip Loc: ITGMBH/KUNDENFIRMA : S/N: SERIENNUMMER-11111111: MODELL MT : U: 1-Prts: Contact Email: KUNDENMAIL@mail.com: AUFTRAGSTYP - std call ; T:; SR: CT: 4-Low OS: Other Other SEV: 3-Medium RPT: 1 Call Type: BNS Def: 04/07/2015 17:00:00+02:00 Par t: CABLES AND CORDS Replace:Parts As Necessary Team: #SMBBuch Issue: left usb from the front is not working Troubleshooting: couldn t update driv er x-test different devices don t work Resolution : replace i/o board and install driver;ORT-Sued PUDO: : :: Part: TEILENUMMER1=1,COM: Part: TEILENUMMER2=1,COM: Part: TEILENUMMER3=2,COM:



Repair Description:
 
Eigentlich wird das mit fast jeder Programmiersprache möglich sein, unter der Bedingung, dass die Datei immer (genau) gleich aussieht.
 
Ja die datei ist zeilenbasiert immer gleich. es steht halt mal mehr oder mal weniger drinnen. Aber die gesuchten Infos stehen immer in der selben Zeile.
Was ist AWK ?
 
AWK ist eine Skriptsprache, die eigentlich aus der Unix-Welt stammt aber auch auf Windows portiert wurde. Sie wurde dafür entwickelt, Textdateien feldorientiert zu bearbeiten, also ziemlich genau dein Anwendungsfall. Das Grundprinzip ist eigentlich einfach: Hat man eine Zeile der Form
felda feldb feldc
kann man mit $1 $2 $3 die einzelnen Felder ansprechen und ausgeben, z. B. so:
print "Name des ersten Feldes:" $1
Natürlich gibt es auch die gängigen Stringoperationen.
Ich benutze es häufig, wenn ich viele Dateien nach dem selben Schema überarbeiten will.
 
Hmm,

Das hört sich ja echt einfach an mit AWK.
Ich werde mich da die Tage mal einlesen. Vlt ist dass ja was.
Sorgen machen mir nur die letzten Zeilen in denen die teilenummern stehen.
Gibt es mit AWK die Möglichkeit z.b. Eine Anfrage so zu formulieren dass er die 5 stellen vor dem "=1,COM" ausgibt?
Weil vor allem in Zeile 93 kann es vorkommen dass da ewig viel Text steht und die teilenummern dann immer erst am Ende stehen.

Vielen Dank für die Hilfe.

Lg Alex
 
Ja, ich schrieb ja, dass die gängigen Stringfunktionen vorhanden sind und damit wäre das ziemlich einfach:
Code:
pos = index($0, "=1,COM")
pos -= 5
result = substr($0, pos, 5)
($0 ist die ganze Zeile)
Wenn Du es dir ansehen willst, dann suche nach gawk, das ist eine fortgeschrittene Version mit verbesserter Fehleranzeige.
 

Neue Beiträge

Zurück