
- 1
- 2

Shellscripting - Suchen und Ersetzen
Hallo zusammen und einen schönen Tag an Alle!
Ich stehe vor folgendem Problem.
Ich habe eine ";"-separierte .txt Datei. In dieser Datei gibt es unter Anderem drei Textfelder, die ebenfalls das ";"-Zeichen enthalten. Da ich diese Datei weiterverarbeiten muss, durch ein Einleseprogramm, und das Trennungszeichen ";" angebe, verschieben sich die Inhalte der Felder nach dem Einlesen.
Hier vielleicht ein kleines Beispiel:
Ursprüngliche .txt-Datei:
Name1 ; Name2 ; Name3 ; Kennzeichen
Muster-;mann ; Schreinerei ; GmbH ; 0
Musterfrau ; Haar & Make;Up ; e.K ; 0
Mustersohn ; Sohn ; e.;V. ; 1
Ergebnis nach dem Einlesen, bspw. als Excel:
Name1 Name2 Name3 Kennzeichen
Muster- mann Schreinerei G
Musterfrau Haar & Make Up e
Mustersohn Sohn e. V
Wie kann ich nun durch ein entsprechendes Shell-Skript erreichen, dass die ";"-Zeichen innerhalb eines Feldes, bzw. innerhalb des Namens, in diesem Fall, ersetzt werden können, ohne dabei dieses Zeichen zwischen den Feldern (Trennungszeichen/Delimiter) zu verändern.
Also folgendermaßen, hier weiterhin als .txt:
Name1 ; Name2 ; Name3
Muster-mann ; Schreinerei ; GmbH
Musterfrau ; Haar & MakeUp ; e.K
Mustersohn ; Sohn ; e.V.
Kann mir hierbei vielleicht jemand behilflich sein? Wäre super wenn jemand eine Idee hätte und ich wäre sehr dankbar dafür.
Viele liebe Grüße
Ich stehe vor folgendem Problem.
Ich habe eine ";"-separierte .txt Datei. In dieser Datei gibt es unter Anderem drei Textfelder, die ebenfalls das ";"-Zeichen enthalten. Da ich diese Datei weiterverarbeiten muss, durch ein Einleseprogramm, und das Trennungszeichen ";" angebe, verschieben sich die Inhalte der Felder nach dem Einlesen.
Hier vielleicht ein kleines Beispiel:
Ursprüngliche .txt-Datei:
Name1 ; Name2 ; Name3 ; Kennzeichen
Muster-;mann ; Schreinerei ; GmbH ; 0
Musterfrau ; Haar & Make;Up ; e.K ; 0
Mustersohn ; Sohn ; e.;V. ; 1
Ergebnis nach dem Einlesen, bspw. als Excel:
Name1 Name2 Name3 Kennzeichen
Muster- mann Schreinerei G
Musterfrau Haar & Make Up e
Mustersohn Sohn e. V
Wie kann ich nun durch ein entsprechendes Shell-Skript erreichen, dass die ";"-Zeichen innerhalb eines Feldes, bzw. innerhalb des Namens, in diesem Fall, ersetzt werden können, ohne dabei dieses Zeichen zwischen den Feldern (Trennungszeichen/Delimiter) zu verändern.
Also folgendermaßen, hier weiterhin als .txt:
Name1 ; Name2 ; Name3
Muster-mann ; Schreinerei ; GmbH
Musterfrau ; Haar & MakeUp ; e.K
Mustersohn ; Sohn ; e.V.
Kann mir hierbei vielleicht jemand behilflich sein? Wäre super wenn jemand eine Idee hätte und ich wäre sehr dankbar dafür.
Viele liebe Grüße
RE: Shellscripting - Suchen und Ersetzen
Hallo zusammen und einen schönen Tag an Alle!
Ich stehe vor folgendem Problem.
Ich habe eine ";"-separierte .txt Datei. In dieser Datei gibt es unter Anderem drei Textfelder, die ebenfalls das ";"-Zeichen enthalten. Da ich diese Datei weiterverarbeiten muss, durch ein Einleseprogramm, und das Trennungszeichen ";" angebe, verschieben sich die Inhalte der Felder nach dem Einlesen.
Hier vielleicht ein kleines Beispiel:
Ursprüngliche .txt-Datei:
Name1 ; Name2 ; Name3 ; Kennzeichen
Muster-;mann ; Schreinerei ; GmbH ; 0
Musterfrau ; Haar & Make;Up ; e.K ; 0
Mustersohn ; Sohn ; e.;V. ; 1
Ergebnis nach dem Einlesen, bspw. als Excel:
Name1 Name2 Name3 Kennzeichen
Muster- mann Schreinerei G
Musterfrau Haar & Make Up e
Mustersohn Sohn e. V
Wie kann ich nun durch ein entsprechendes Shell-Skript erreichen, dass die ";"-Zeichen innerhalb eines Feldes, bzw. innerhalb des Namens, in diesem Fall, ersetzt werden können, ohne dabei dieses Zeichen zwischen den Feldern (Trennungszeichen/Delimiter) zu verändern.
Also folgendermaßen, hier weiterhin als .txt:
Name1 ; Name2 ; Name3
Muster-mann ; Schreinerei ; GmbH
Musterfrau ; Haar & MakeUp ; e.K
Mustersohn ; Sohn ; e.V.
Kann mir hierbei vielleicht jemand behilflich sein? Wäre super wenn jemand eine Idee hätte und ich wäre sehr dankbar dafür.
Viele liebe Grüße
Ich kann dich gerade nicht verstehen was du vorhast.. du hast die txt datei mit ; getrennten wörtern, und was soll am ende dabei rauskommen? ein Beispiel wäre nicht schlecht, damit man direkt erkennen kann, was am ende rauskommen sollte
MFG
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
Was mir hier einfällt, ist nur, die richtigen Datensätze( jene, die nur 3 Semikolons haben) herauszufiltern und automatisch zu übernehmen und den Rest zu separieren und von Hand nachzuarbeiten. Außerdem würde ich schleunigst ein anderes Trennzeichen einführen oder Semikolons in der Eingabemaske der Namen verbieten.
Hallo zusammen,
vielen lieben Dank für Eure schnellen Antworten. Sodeli,
@igorGlock:
Das mit dem Ersetzen geht leider nicht. Da ich ja dann alle ";" ersetzen würde, die meisten dienen mir aber als Spaltentrennzeichen.
@ospx:
Ich kann die Ursprungsdatei leider nicht ändern, also auch nicht das Trennzeichen. Diese bekomme ich auf diese Art. Und einzelne Feldinhalte kann ich auch manuell nicht verändern, da es sich hier um rund 600.000 Datensätze handelt.
@cccpmik:
Also das Problem ist, dass ich eine ";" - separierte Textdatei bekomme, ohne Spaltennamen/Überschriften. Drei Felder, hier Namensfelder, haben auch ein Semikolon enthalten. Diese Textdatei muss ich weiterverarbeiten, sprich einlesen. Beim Einlesen muss ich aber angeben, dass ich ein Spaltentrennzeichen habe, nämlich blöderweise auch ein ";". Somit sieht er auch das ";" innerhalb eines Feldes (hier des Namensfeldes) als Trennzeichen. Ganz einfach ist es an dem Beispiel, wenn ich eine ";"-separierte Datei in Excel importieren möchte. Da muss ich ein Spaltentrennzeichen angeben. Ich möchte also sagen können:
- Wenn im Namensfeld, also Feld an der Position X, ein Semikolon enthalten ist, ersetze es durch "blank"
Aber die Trennzeichen sollen beibehalten werden.
Ich weiß nicht, ob ich mich gut erklären konnte. Es ist auch äußerst schwierig. Ein Beispiel hatte ich unten genannt.
Folgendermaßen:
Man nehme an, ich habe 4 Felder in einer Datei, jedoch ohne Überschriften:
Igor;Glock ; Glockmeister ; GmbH ; 123
ospx ; Wald-;schule ; e.V. ; 487
cccpmik ; Shellbetrieb ; O;HG ; 9087
So, das Problem ist, dass innerhalb der Namensfelder ein ";" steckt. Die möchte ich ersetzen. Sprich, "Waldschule-, IgorGlock- und OHG"
Die ";" die zwischen den Namensfeldern stehen jedoch nicht, denn diese sind meine Spaltentrennzeichen.
Ich befürchte das wird gar nicht gehen
vielen lieben Dank für Eure schnellen Antworten. Sodeli,
@igorGlock:
Das mit dem Ersetzen geht leider nicht. Da ich ja dann alle ";" ersetzen würde, die meisten dienen mir aber als Spaltentrennzeichen.
@ospx:
Ich kann die Ursprungsdatei leider nicht ändern, also auch nicht das Trennzeichen. Diese bekomme ich auf diese Art. Und einzelne Feldinhalte kann ich auch manuell nicht verändern, da es sich hier um rund 600.000 Datensätze handelt.
@cccpmik:
Also das Problem ist, dass ich eine ";" - separierte Textdatei bekomme, ohne Spaltennamen/Überschriften. Drei Felder, hier Namensfelder, haben auch ein Semikolon enthalten. Diese Textdatei muss ich weiterverarbeiten, sprich einlesen. Beim Einlesen muss ich aber angeben, dass ich ein Spaltentrennzeichen habe, nämlich blöderweise auch ein ";". Somit sieht er auch das ";" innerhalb eines Feldes (hier des Namensfeldes) als Trennzeichen. Ganz einfach ist es an dem Beispiel, wenn ich eine ";"-separierte Datei in Excel importieren möchte. Da muss ich ein Spaltentrennzeichen angeben. Ich möchte also sagen können:
- Wenn im Namensfeld, also Feld an der Position X, ein Semikolon enthalten ist, ersetze es durch "blank"
Aber die Trennzeichen sollen beibehalten werden.
Ich weiß nicht, ob ich mich gut erklären konnte. Es ist auch äußerst schwierig. Ein Beispiel hatte ich unten genannt.
Folgendermaßen:
Man nehme an, ich habe 4 Felder in einer Datei, jedoch ohne Überschriften:
Igor;Glock ; Glockmeister ; GmbH ; 123
ospx ; Wald-;schule ; e.V. ; 487
cccpmik ; Shellbetrieb ; O;HG ; 9087
So, das Problem ist, dass innerhalb der Namensfelder ein ";" steckt. Die möchte ich ersetzen. Sprich, "Waldschule-, IgorGlock- und OHG"
Die ";" die zwischen den Namensfeldern stehen jedoch nicht, denn diese sind meine Spaltentrennzeichen.
Ich befürchte das wird gar nicht gehen
da befürchtest du es richtig...du musst schon da eine unterscheidung haben zwischen einzelnen spalten und zeilen , also entweder trennzeichen ändern oder es so lassen wie es ist
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
Ja, das ist wirklich blöd in diesem Fall.
Aber würde es gehen, wenn ich feste Satzlängen hätte, bzw. Feldlängen?
So ähnlich wie, gehe bis zum 1000. Zeichen. Prüfe zwischen Zeichen 1001 und 1020 nach ";" und ersetze diese. Überspringe Zeichen 1021 bis 1022 (wobei das ja dann nicht angegeben werden müsste, da das ";" bleiben muss), prüfe dann wieder ab 1023 bis 1035 usw.
Wäre dies generell möglich?
Aber würde es gehen, wenn ich feste Satzlängen hätte, bzw. Feldlängen?
So ähnlich wie, gehe bis zum 1000. Zeichen. Prüfe zwischen Zeichen 1001 und 1020 nach ";" und ersetze diese. Überspringe Zeichen 1021 bis 1022 (wobei das ja dann nicht angegeben werden müsste, da das ";" bleiben muss), prüfe dann wieder ab 1023 bis 1035 usw.
Wäre dies generell möglich?
ich würde es bei namen usw vermeiden nach einer bestimmten zeichenlänge zu suchen, generell würde es aber gehen
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
kannst du denn davon ausgehen, dass der trenner, wenn als trenner benutzt in leerzeichen gekleidet ist, wie in deinem beispiel, und die in den feldwerten nicht? oder war das nur um das beispiel besser zu verdeutlichen?
edit: mhm zu langsam...
edit: mhm zu langsam...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ivanhoe« (4. November 2010, 18:54)
Hallo und einen schönen guten Morgen!
@gen4ik:
Ich habe leider keine Leerzeichen dazwischen, bzw. nicht konstanterweise.
Was Du im letzen Beitrag gepostet hast, habe ich aber leider nicht verstanden. Meine Ursprungsdatei hat deutlich mehr als 4 Spalten.
Aber was Du mit danach suchen gemeint hast, weiß ich leider nicht
@ivanhoe:
Die Leerzeichen in meinem Beispiel waren tatsächlich nur zur Verdeutlichung, dass es Spaltentrenner sind.
@gen4ik:
Ich habe leider keine Leerzeichen dazwischen, bzw. nicht konstanterweise.
Was Du im letzen Beitrag gepostet hast, habe ich aber leider nicht verstanden. Meine Ursprungsdatei hat deutlich mehr als 4 Spalten.
Aber was Du mit danach suchen gemeint hast, weiß ich leider nicht
@ivanhoe:
Die Leerzeichen in meinem Beispiel waren tatsächlich nur zur Verdeutlichung, dass es Spaltentrenner sind.
poste bitte den datei .
wo die namen stehen wenn das geht
was ich mit lezten beitrag sagen wollte das du nach mehr als sonst spalten anzahl suchst."hoffe verstanden"
natürlich geht das nur dann wenn du konstante spaltenanzahl hast
und man muss das irgend wie ändern/erkennen können was jetzt als trenner ist und was nicht
zb
heinrich ; landgraf ; senner;str66 ; bielefeld
genna ; sdjkflskdj ; sdsdgfjhs ; hamm
1 zeile -Spalten 5 error
erkennung was in die spalte gehört
oder manuele eingabe von benuzer auch eine lösung
2 zeile -Spalten 4 ok
spalte spalte spalte
zeile
zeile
zeile
hoffe richtig mit spalten und zeilen
wo die namen stehen wenn das geht
was ich mit lezten beitrag sagen wollte das du nach mehr als sonst spalten anzahl suchst."hoffe verstanden"
natürlich geht das nur dann wenn du konstante spaltenanzahl hast
und man muss das irgend wie ändern/erkennen können was jetzt als trenner ist und was nicht
zb
heinrich ; landgraf ; senner;str66 ; bielefeld
genna ; sdjkflskdj ; sdsdgfjhs ; hamm
1 zeile -Spalten 5 error
erkennung was in die spalte gehört
oder manuele eingabe von benuzer auch eine lösung
2 zeile -Spalten 4 ok
spalte spalte spalte
zeile
zeile
zeile
hoffe richtig mit spalten und zeilen
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Hallöli gen4ik,
also ich habe eine veränderte Form der Datei beigefügt. Aber es ist genau der selbe Aufbau. Nur mit mehr Spalten im Originalen.
Diese Datei hat eine konstante Anzahl an Spalten. Die Spaltenanzahl ändert sich nicht. Und die Spalten haben eine feste Breite.
Und zu Deiner Anmerkung mit der Erkennung, haben wir ja das eigentlich Problem. Man kann leider nicht erkennen, welches als Spaltentrenner gilt und welches im Namen enthalten ist. Bis eben auf die feste Spaltenbreite.
Aber die manuelle Eingabe geht leider nicht, da es xxxMB-Dateien sind. Das wäre natürlich die einfachste Variante gewesen. Vor allem für mich als eigentlicher Windowsler :-)
also ich habe eine veränderte Form der Datei beigefügt. Aber es ist genau der selbe Aufbau. Nur mit mehr Spalten im Originalen.
Diese Datei hat eine konstante Anzahl an Spalten. Die Spaltenanzahl ändert sich nicht. Und die Spalten haben eine feste Breite.
Und zu Deiner Anmerkung mit der Erkennung, haben wir ja das eigentlich Problem. Man kann leider nicht erkennen, welches als Spaltentrenner gilt und welches im Namen enthalten ist. Bis eben auf die feste Spaltenbreite.
Aber die manuelle Eingabe geht leider nicht, da es xxxMB-Dateien sind. Das wäre natürlich die einfachste Variante gewesen. Vor allem für mich als eigentlicher Windowsler :-)
"spalten haben eine feste länge "
die frage hast du schon selber beantwortet
spalte 1-7zeichen+trennzeichen
spalte 2 10 zeichen + trennzeichen
usw.
ist eindlich kein problemm
edit:
";" als trennzeichen brauchst du nicht mehr
die frage hast du schon selber beantwortet
spalte 1-7zeichen+trennzeichen
spalte 2 10 zeichen + trennzeichen
usw.
ist eindlich kein problemm
edit:
";" als trennzeichen brauchst du nicht mehr
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gen4ik« (5. November 2010, 14:29)
das mit trennzeichen meinte ich das man nicht nach trennzeichen trennt sondern nach länge
die kanst du dann als trennzeichen behalten für spätere bearbeitung
aber das andere ";" muss weg. ersetzen durch ";;" oder X was eben nicht im text vorkommt
und wenn du nur eine linie aus dem datei liest und nicht komplett
wird einfacher
edit:
welche sprache benuzt du ?
die kanst du dann als trennzeichen behalten für spätere bearbeitung
aber das andere ";" muss weg. ersetzen durch ";;" oder X was eben nicht im text vorkommt
und wenn du nur eine linie aus dem datei liest und nicht komplett
wird einfacher
edit:
welche sprache benuzt du ?
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »gen4ik« (5. November 2010, 14:48)

- 1
- 2

Ähnliche Themen
-
(X)HTML & CSS & DHTML & Javascript »-
Tool für Umlaute in HTML
(27. Dezember 2008, 13:29)
-
PHP »-
Frage zu den Ascii Zeichen
(3. Oktober 2004, 21:03)
-
Archiv: Software »-
Wie gehts? ....
(24. September 2004, 19:15)
-
Archiv: Software »-
???Dateiinhalt suchen und ersetzen???
(16. September 2003, 10:51)
-
Archiv: Software »-
"Intelliegentes" HTML-Programm, dass mein Problem löst???
(17. Juli 2003, 19:26)


