online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon maeder1 vom 11.06.2020, 08:04 Options

Lösung

Daten in Textdateien ändern???

Hallo

ich schildere mal mein kleines Problem, vieleicht hat jemand eine Lösung füs mich :S

Nun ich habe einen Ordner mit hunderten Textdateien (Endung lautet *.nc1, da es NC-Daten sind). In jeder Datei auf der vierten Zeile stehet eine Zahl, welche ich überschreiben muss - Datei speichern und die nächste öffnen. Nun läuft es mir zuwieder diese Masse an Dateien zu öffnen, von Hand zu überschreiben und zu speichern.

Hat jemand eine einfache Lösung für eine Art "Stapelverarbeitung"? Oder ein Vorschlag, wie in ein Programm erstellen kann, welches genau dies macht?

Bin um jeden Hinweis dankbar :)

Gruss
maeder1


Antwort schreiben

Antwort 1 von Teerbaby vom 11.06.2020, 08:37 Options

Ich hab das zwar noch nicht ausprobiert, aber vllt. hilft dir das: http://www.freeware.de/download/sr-manager-suchen-ersetzen-in-mehre...

Antwort 2 von son_quatsch vom 11.06.2020, 08:40 Options

Ja, besorge dir einen Editor, der eine Funktion hat wie z.B. "Suchen und Ersetzen in Dateien". Ein Kandidat wäre UltraEdit. Dort gibst du als Suchtext beispielsweise \n[0-9]+\n, als Ersetzungstext \n0815\n, als Dateitypen *.nc1 und als Verzeichnis jenes, in dem die Dateien stehen. Dann noch die Option Unterverzeichnisse durchsuchen deselektieren und Reguläre Ausdrücke selektieren.

Jetzt der schwierige Teil: reguläre Ausdrücke sind spezielle Such- und Ersetzungsmuster. Wenn es beispielsweise die einzige Zeile in den Dateien mit einer Zahl ist, dann wird auch nur die ersetzt. Ansonsten müssen wir das ganze erweitern (z.B., wie sieht die Zeile davor und die danach aus, damit auch wirklich NUR die eine Zeile mit der Zahl gefunden wird).

Wenn ich dir eine komplette Anleitung geben soll, dann
- lad dir UltraEdit runter und
- zeig hier den Inhalt einer NC1-Datei als Beispiel.

Antwort 3 von maeder1 vom 11.06.2020, 11:41 Options

Hallo

das Problem ist, dass nur das Zeichen auf Zeile 4 überschrieben werden muss. Die Zahl welche dort steht, kann aber noch mehrmals im Dokument erscheinen und darf dort aber nicht überschrieben werden. Hier der Inhalt:


ST
** M_4.nc1
  1182
  1
  M.4
  M.4
  S355J0
  1
  HEA1000
  I
   17670.00
     990.00
     300.00
      31.00
      16.50
      30.00
    272.000
      3.100
      0.000
      0.000
      0.000
      0.000




AK
  v       0.00s      0.00       0.00       0.00       0.00       0.00       0.00
      17670.00       0.00       0.00       0.00       0.00       0.00       0.00
      17670.00     990.00       0.00       0.00       0.00       0.00       0.00
          0.00     990.00       0.00       0.00       0.00       0.00       0.00
          0.00       0.00       0.00       0.00       0.00       0.00       0.00
AK
  o       0.00s      0.00       0.00       0.00       0.00       0.00       0.00
          0.00     300.00       0.00       0.00       0.00       0.00       0.00
      17670.00     300.00       0.00       0.00       0.00       0.00       0.00
      17670.00       0.00       0.00       0.00       0.00       0.00       0.00
          0.00       0.00       0.00       0.00       0.00       0.00       0.00
AK
  u       0.00s      0.00       0.00       0.00       0.00       0.00       0.00
      17670.00       0.00       0.00       0.00       0.00       0.00       0.00
      17670.00     300.00       0.00       0.00       0.00       0.00       0.00
          0.00     300.00       0.00       0.00       0.00       0.00       0.00
          0.00       0.00       0.00       0.00       0.00       0.00       0.00
BO
  o     400.00s     65.00      14.00
  o    1200.00s     65.00      14.00
  o    2000.00s     65.00      14.00
  o    2800.00s     65.00      14.00
  o    3600.00s     65.00      14.00
  o    4400.00s     65.00      14.00
  o    5200.00s     65.00      14.00
  o    6000.00s     65.00      14.00
  o    6400.00s     65.00      14.00
  o    7200.00s     65.00      14.00
  o    8000.00s     65.00      14.00
  o    8800.00s     65.00      14.00
  o    9600.00s     65.00      14.00
  o   10400.00s     65.00      14.00
  o   11200.00s     65.00      14.00
  o   12000.00s     65.00      14.00
  o   12600.00s     65.00      14.00
  o   13400.00s     65.00      14.00
  o   14200.00s     65.00      14.00
  o   15000.00s     65.00      14.00
  o   15800.00s     65.00      14.00
  o   16600.00s     65.00      14.00
  o   17400.00s     65.00      14.00
BO
  u      45.00s     65.00      22.00
  u      45.00s    235.00      22.00
  u     355.00s     65.00      22.00
  u     355.00s    235.00      22.00
  u   12020.00s     65.00      22.00
  u   12020.00s    235.00      22.00
  u   12380.00s     65.00      22.00
  u   12380.00s    235.00      22.00
EN


Hier steht nun in der vierten Zeile die Zahl 1 (kann aber auch eine andere, auch mehrstellige, sein. Die müsste ich ersetzen. Mit SR-Manager kann das, soviel ich herausgefunden habe, nicht funktionieren, da dann ja alle 1 überschrieben werden...

Antwort 4 von Teerbaby vom 11.06.2020, 12:28 Options

Wird wohl auch mit einer Regular Expression schwierig.
Das einzige was mir einfallen würde, wäre ein kleines Programm schreiben, dass die Dateien zeilenweise ausliest oder die Dateien in eine Datenbank einzulesen und dann die Tabelle per SQL zu ändern.

Antwort 5 von son_quatsch vom 11.06.2020, 12:37 Options

Gesetzt den Fall, dass
- eine Zeile der Datei nur ST enthält,
- die darauffolgende mit ** beginnt,
- die darauffolgende mit zwei Leerzeichen beginnt,
- die darauffolgende mit zwei Leerzeichen beginnt,
- im Rest jener Zeile nur Ziffern vorkommen

und ALL diese Regeln nur ein einziges Mal in jeder Datei zutreffen, dann sieht der Suchbegriff so aus:

^(ST\p\*\*.+\p .+\p )[0-9]+\p

...und die Ersetzung:

\1666\p

(wobei 666 die neue Zahl wäre)

Antwort 6 von disco vom 11.06.2020, 12:42 Options

moin

ich weiss nicht welche programmiersprache dir zur verfügung steht, aber das vorgehen ist ja sehr einfach.

-alle dateien zeilenweise einlesen und in neue datei schreiben.
-wenn zeile = 4 ist, diese zeile auslassen und stattdessen deinen alternativen text/zahl ausgeben.

datenbanken und sonstiges sind hier nicht nötig.
in java/php/perl/... sollten das nicht mehr als 15 zeilen code sein.

g,
disco

Antwort 7 von maeder1 vom 11.06.2020, 13:38 Options

die Dateien sehen alle ähnlich aus. Der untere (und sehr grosse Teil) sind Koordinaten, diese variieren. Aber ansonsten bleibt der Aufbau der Datei gleich.

Betreffend Programmiersprachen, ein bisschen VB könnte ich herbrösmeln, wäre damit was zu schaffen?

Antwort 8 von son_quatsch vom 11.06.2020, 13:53 Options

Wie gesagt - ich hab im Klartext geschrieben, wonach mein regulärer Ausdruck sucht und was damit EXAKT gleich sein muss (alles nach der vierten Zeile interessiert keinen). Kombiniert mit genanntem Editor ist die Aufgabe zu 100% lösbar.

Woran haperts?

Antwort 9 von maeder1 vom 11.06.2020, 14:12 Options

@son_quatsch

also die Dateien entsprechen genau Deinen Regeln, habst nochmals geprüft. aber UltraEdit sagt "0 Einträge ersetzt in 0 Datei(en)"

weiss nicht was noch ein Problem darstellen könnte. Vieleich bin ich zum bedienen zu dumm ;)

soll ich mal ne datei onlinestellen?

Antwort 10 von son_quatsch vom 11.06.2020, 14:26 Options

Ah Danke - das war schön detailliert :-)

Ja, lad mal eine hoch - und zusätzlich überprüfst du in UltraEdit bitte bei Extras -> Optionen -> Suchen -> ob "Reguläre Ausdrücke im UNIX-Stil" aktiviert ist. Falls nicht, anhaken und nochmal probieren.

Antwort 11 von maeder1 vom 11.06.2020, 15:15 Options

Also hier kannst Du die NC-Datei runterladen. Die Einstellung werd ich heute Abend kurz testen.

Danke schonmal
gruss
maeder1

Antwort 12 von son_quatsch vom 11.06.2020, 16:05 Options

Bestens, habs mit der einen probiert und es hat geklappt, wie es sollte. Jetzt müssen wir es nur noch bei dir schaffen ;-)

Antwort 13 von maeder1 vom 01.07.2020, 16:00 Options

Bin auch wiedermal hier.
Leider hab ichs bis jetzt noch immer nicht geschafft.
An irgendwas scheitere ich andauernd, aber ultraedit will mir nicht sagen, was das Problem ist.

Ich hab die Version 14.00b ist die ok?
kannst du mir evtl. die optionen (sind ja importier und exportierbar) zusenden?

gruss
maeder1

Antwort 14 von son_quatsch vom 02.07.2020, 08:34 OptionsLösung

Lösung
Ich hab 11.00 und kann nichts exportieren. Achte bei den Optionen im Bereich "Suchen" darauf, dass die Option "Reguläre Ausdrücke im UNIX-Stil" aktiviert ist.

Ansonsten musst du mir die Fehlermeldung von "irgendwas" sagen.

Antwort 15 von maeder1 vom 02.07.2020, 08:48 Options

demnach gibt es mit 14.00b einige neue Funktionen... Ich habe aber noch eine andere Lösung gefunden: Marko! Im 14.00 ist es möglich (ähnlich VBA in Excel) ein Makro zu "programmieren". So kann ich alle Dateien öffnen und das Makro wiederholen lassen bis alle Daten weg sind.

Demnach hat sich mein Problem erledigt :) Danke für die Tipps und Hinweise.

Gruss
maeder1

Ähnliche Themen

Schnelles Einlesen von Textdateien in Excel
RF-Bug  07.01.2007 - 141 Hits - 4 Antworten

Umlaute in Ultra Edit
Lillililli  26.06.2007 - 94 Hits - 5 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026