Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

1 Zum Seitenanfang

Donnerstag, 4. November 2010, 11:24

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
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 998

 

2 Zum Seitenanfang

Donnerstag, 4. November 2010, 11:31

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-
 

ospx

Kaiser

Dabei seit: 11.11.2006

Beiträge: 1 131

 

3 Zum Seitenanfang

Donnerstag, 4. November 2010, 11:39

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.
 

IgorGlock

Tripel-As

Dabei seit: 17.06.2009

Beiträge: 161

 

4 Zum Seitenanfang

Donnerstag, 4. November 2010, 11:41

Da kann dir jeder Texteditor unter Windows / MAC / Linux helfen. Ich benutze z.b. Notepad++.
Bei Notepad++ geht's so:

STRG+H
Suche nach: ;
Ersetze mit:
Fertig. Dann sind alle deine ";" weg. Also bei "ersetzen" einfach leer lassen dieses Feld. :thumbsup:
 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

5 Zum Seitenanfang

Donnerstag, 4. November 2010, 12:26

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 ?(
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 998

 

6 Zum Seitenanfang

Donnerstag, 4. November 2010, 12:39

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-
 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

7 Zum Seitenanfang

Donnerstag, 4. November 2010, 12:50

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?
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 998

 

8 Zum Seitenanfang

Donnerstag, 4. November 2010, 12:57

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-
 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

9 Zum Seitenanfang

Donnerstag, 4. November 2010, 15:23

Du hast recht, es ist auch keine wirklich saubere Variante. Aber danke Euch für die Beiträge und schnellen Antworten.

Einen schönen nachmittag noch :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »shellme« (4. November 2010, 15:23)

 

gen4ik

Doppel-As

Dabei seit: 08.09.2010

Beiträge: 126

 

10 Zum Seitenanfang

Donnerstag, 4. November 2010, 18:47

wenn leerzeichen dazwischen ist kanst du von ";" und " ; " unterscheiden
oder trennzeichen ändern
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
 

ivanhoe

Eroberer

Dabei seit: 09.06.2009

Beiträge: 69

 

11 Zum Seitenanfang

Donnerstag, 4. November 2010, 18:54

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

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ivanhoe« (4. November 2010, 18:54)

 

gen4ik

Doppel-As

Dabei seit: 08.09.2010

Beiträge: 126

 

12 Zum Seitenanfang

Donnerstag, 4. November 2010, 19:00

oder nach mehr als 4 spalten suchen und ändern
automatisch am bessten :D
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

13 Zum Seitenanfang

Freitag, 5. November 2010, 07:47

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

Doppel-As

Dabei seit: 08.09.2010

Beiträge: 126

 

14 Zum Seitenanfang

Freitag, 5. November 2010, 09:55

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 :)
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.
 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

15 Zum Seitenanfang

Freitag, 5. November 2010, 13:54

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 :-)
»shellme« hat folgende Datei angehängt:
  • Bsp.TXT (270 Byte - 20 mal heruntergeladen - zuletzt: 22. Februar 2012, 21:51)
 

gen4ik

Doppel-As

Dabei seit: 08.09.2010

Beiträge: 126

 

16 Zum Seitenanfang

Freitag, 5. November 2010, 14:29

"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
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »gen4ik« (5. November 2010, 14:29)

 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

17 Zum Seitenanfang

Freitag, 5. November 2010, 14:36

Ja irgendwie schon, Du hast Recht :)

Und wir sind ja dann gestern auch nur auf die Möglichkeit gekommen, Zeichen zu zählen. Was natürlich nicht sonderlich chic ist, aber eben nicht anders funktioniert.

Aber mein Trennzeichen benötige ich auf alle Fälle, denn ich muss diese Datei weiterverarbeiten.
 

gen4ik

Doppel-As

Dabei seit: 08.09.2010

Beiträge: 126

 

18 Zum Seitenanfang

Freitag, 5. November 2010, 14:48

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 ?
В нас часто проявляется плебейство.Ну, что ж, один - атлет, другой - Атлант.Несовместимы Гений и Злодейство,Но совместимы зависть и талант.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »gen4ik« (5. November 2010, 14:48)

 

NiGhtWaRe³

Doppel-As

Dabei seit: 05.08.2010

Beiträge: 125

 

19 Zum Seitenanfang

Freitag, 5. November 2010, 15:55

Wie "IgorGlock" schon sagt einfach im Editor STRG + H drücken und dann eben suchen nach ";" und dann eben diese zeichen durch deins ersetzen :D
 

shellme

Jungspund

Dabei seit: 04.11.2010

Beiträge: 11

 

20 Zum Seitenanfang

Montag, 8. November 2010, 08:47

NIghtware, das geht eben nicht!!!!

Siehe meine Kommentare zuvor.