1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

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

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von iAlex7828, 9. April 2015.

  1. iAlex7828

    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 (Text):
    1. Arbeitgeber Cooperation
    2.  
    3.  
    4.  
    5.  
    6.  
    7.  
    8.  
    9.  
    10.  
    11. S E R V I C E  W O R K  O R D E R -  AUFTRAGSNUMMER1  8509205936
    12.  
    13. ------------------------------------------------------------------------------
    14.  
    15. Entered: 02/04/2015 14:54     By: DTS
    16.  
    17. ------------------------------------------------------------------------------
    18.  
    19. Model Number:7250-0100-9898
    20.  
    21. Serial No:              Type: Maintenance 3Not Urgent    Status: Assigned
    22.  
    23. 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)
    24.  
    25. Product Ref:
    26.  
    27. Caller: KUNDENNAME
    28.  
    29. Telephone: KUNDENTELEFON
    30.  
    31. Customer Reference: AUFTRAGSNUMMER2
    32.  
    33. ------------------------------------------------------------------------------
    34.  
    35. Customer Code: xxxx
    36.  
    37.  
    38.  
    39. --- CUSTOMER ADDRESS ---               --- EQUIPMENT ADDRESS ---
    40.  
    41.   ITGMBH DE (GERMANY)                        ITGMBH DE (GERMANY)
    42.  
    43.   straßeunwichtigstraße10                KUNDENADRESSE 22 .
    44.  
    45.   ortunwichtig  DE plzunwichtig                KUNDENORT BB DE KUNDENPLZ
    46.  
    47.  
    48.  
    49. ------------------------------------------------------------------------------
    50.  
    51.  
    52.  
    53. Request Date:  Project Arrival: 07/04/2015
    54.  
    55. Entry Time  : 02/04/2015 14:54            Time  : 16:00
    56.  
    57.  
    58.  
    59. Status:         Assigned
    60.  
    61. Technician name: tecid
    62.  
    63.  
    64.  
    65. ------------------------------------------------------------------------------
    66.  
    67.  
    68.  
    69. Arrival Date:                   Intervention Delay: 07/04/2015 16:00
    70.  
    71. Arrival Time:                   Repair Delay:
    72.  
    73. Completion Date:             Job Time:  
    74.  
    75. Completion Time:             Travel Time:
    76.  
    77. ------------------------------------------------------------------------------
    78.  
    79.  
    80.  
    81. 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)
    82.  
    83.  
    84.  
    85.  
    86.  
    87. Remarks:
    88.  
    89. Task Notes: CE IS NOW id
    90.  
    91.  
    92.  
    93. 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:
    94.  
    95.  
    96.  
    97. Repair Description:
     
  2. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Wenn der Aufbau der Arbeitsaufträge immer genau gleich ist, könnte man so etwas gut mit AWK machen.
     
  3. alxy

    alxy Erfahrenes Mitglied

    Eigentlich wird das mit fast jeder Programmiersprache möglich sein, unter der Bedingung, dass die Datei immer (genau) gleich aussieht.
     
  4. iAlex7828

    iAlex7828 Grünschnabel

    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 ?
     
  5. Sempervivum

    Sempervivum Erfahrenes Mitglied

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

    iAlex7828 Grünschnabel

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

    Sempervivum Erfahrenes Mitglied

    Ja, ich schrieb ja, dass die gängigen Stringfunktionen vorhanden sind und damit wäre das ziemlich einfach:
    Code (Text):
    1. pos = index($0, "=1,COM")
    2. pos -= 5
    3. 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.
     
Die Seite wird geladen...