Text-Datei nach Datensatz trennen, schleife

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
satinez
Beiträge: 39
Registriert: 16.03.2011 08:53:21

Text-Datei nach Datensatz trennen, schleife

Beitrag von satinez » 06.05.2011 16:05:15

ciao!

Also ich habe eine kleine Aufgabe gefasst, doch nun weiss ich nicht wie ich das ganze angehen soll.

1. Ich bekomme eine EXCEL-DATEI mit 700 Zeilen
2. Diese konvertiere ich in eine TAB getrennte TEXT-DATEI mittels Excel

Wie separiere ich nun diese TEXT-DATEI in die einzelnen 700 Datensätze ?
z.B. Notepad++ zeigt mir an welches der nächste Datensatz ist.

Ich benötige doch eine schleife, oder?

greet;s satinez

yeti

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von yeti » 06.05.2011 16:36:20

Was meinst Du mit "separieren"?

satinez
Beiträge: 39
Registriert: 16.03.2011 08:53:21

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von satinez » 06.05.2011 16:39:47

Ich meine damit trennen, so das ich in einer Schleife jeden einzelenen Datensatz bearbeiten kann.

greet;s satinez

yeti

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von yeti » 06.05.2011 16:48:54

Meine Testdaten...

Code: Alles auswählen

(yeti@destiny:1)~/xxx$ cat daten
1       2       3       4       5
11      22      33      44      55
111     222     333     444     555
Als Beweis, daß sie tatsächlich TAB-getrennt sind:

Code: Alles auswählen

(yeti@destiny:1)~/xxx$ cat -T daten 
1^I2^I3^I4^I5
11^I22^I33^I44^I55
111^I222^I333^I444^I555
...und so könnte eine Schleife in der Shell aussehen die die Daten zeilenweise einliest und bearbeiten könnte und wieder ausgibt. Die Bearbeitung fehlt hier aber schlicht...

Code: Alles auswählen

(yeti@destiny:1)~/xxx$ cat daten | while read a b c d e ; do echo $a $b $c $d $e ; done 
1 2 3 4 5
11 22 33 44 55
111 222 333 444 555
...oder in welcher Sprache suchtest Du die Lösung?

satinez
Beiträge: 39
Registriert: 16.03.2011 08:53:21

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von satinez » 06.05.2011 16:55:46

Danke für die rasche Info.

Werde das heute Abend ausprobieren, aber wozu dient diese Variablen $a $b ... ?

Ich möchte dies eigentlich in der Shell machen, da ich von excel nicht viel Ahnung habe.
Später sollen diese Spalten und Werte in ein XML File gespeichert werden.

greet;s satinez

yeti

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von yeti » 06.05.2011 17:03:36

Das read-Kommando hat soviele Variablennamen von mir verpaßt bekommen wie Spalten in der Datei sind. So landet jeweils der i-te Wert der Zeile in der i-ten Variablen.
So hat read Dir dann die Zeile in einzelne Werte zerlegt.
Wenn Du nur eine Variable bei read angibst, landet die ganze Zeile in dieser Variable. Auch ok... dann mußt Du halt selber mit BASHscher Stringverarbeitung darauf rumfuhrwerken.

Generell wäre bei solcher Aufgabe aber awk das Tool meiner Wahl. Das ist sozusagen die unixoïde Antwort auf die Frage nach einer Tabellenkalkulation... aber irgendwie hab ich ja schon geahnt, daß das das arme dauernd unterschätzte awk mal wieder niemanden interessiert...

satinez
Beiträge: 39
Registriert: 16.03.2011 08:53:21

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von satinez » 06.05.2011 18:31:47

Interessieren würde mich das schon, doch ich muss mal zuerst mit cut, grep und co. anfangen :D

Habe einige Versuche gemacht mit awk, doch die motivation mit sovielen Klammern und Sonderzeichen waren verwirrend.


Okay danke, ich habe nun das grosse so mit den Variablen in einer Schleife (while do) eingegeben.

Code: Alles auswählen

# cat letter.csv | while read a b c d e f g h i ; do echo $a $b $c $d $e $f $g $h $i ; done
So jetzt wird halt alles nochmal ausgegeben. Jetzt wirds komplizierter.

Ich denke dazu benötige ich ein Scriptfile zur übersicht.

1. Ich habe es jetzt in eine CSV-DATEI konvertiert, scheint besser auszusehen.
2. Wie kann ich jetzt diese so quasi wie trennen, oder erledigt das die while schleife?
3. Ich muss was in einer Spalte verändern und in eine andere Auslagern, geht das auch?


EDIT: Habe ein Bild gemacht.
Bild

Ich möchte gerne in der Textzelle (im Bild) das Publiziert: 11.04.2011 Meldungsnummer: 6116936 entfernen und alles was nach Publiziert: bis Meldungsnummer kommt
in eine neue Spalte einfügen. Das selbe bei der Meldungsnummer.

Ist das ueberhaupt möglich, oder sollte ich da besser mit EXCEL ran?

greet;s satinez

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von Liffi » 06.05.2011 19:38:22

Wenn es noch komplizierter wird wuerde ich zu einer Sprache wie Perl oder Python raten.
Da wird das ganze moeglicherweise uebersichtlicher (und evtl. auch einfacher).

yeti

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von yeti » 06.05.2011 22:20:13

So wie das Bild ausschaut hat die Trennung der Zeile in Felder wohl nicht geklappt.

satinez
Beiträge: 39
Registriert: 16.03.2011 08:53:21

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von satinez » 06.05.2011 22:52:47

Ja geklappt hat sie nicht, denn nur mit

Code: Alles auswählen

# cat letter.csv | while read a b c d e f g h i ; do echo $a $b $c $d $e $f $g $h $i ; done
macht er das nicht :D

Das Bild ist nur ein Beispiel, wie es aussehen müsste, von der Struktur.

Nur weiss ich nicht, wie ich da vorgehen muss :(

EDIT: Ich denke ich fang mal mit dem Text an, den zu filtern.

TEXT

Code: Alles auswählen

Ackermann & Stassi Immobilienverwaltung, in Jonen, CH-400.2.032.969-3, Feldring, 8916 Jonen, Kollektivgesellschaft (Neueintragung). Beginn: 01.03.2011. Zweck: Erbringen von Dienstleistungen in den Bereichen Immobilienverwaltung sowie Kauf und Verkauf von Immobilien. Eingetragene Personen: Ackermann, Monica, von St. Antoni, in Jonen, Gesellschafterin, mit Kollektivunterschrift zu zweien; Stassi, Marianne, von Zürich, in Berikon, Gesellschafterin, mit Kollektivunterschrift zu zweien; Ackermann, Philipp, von St. Antoni, in Jonen, mit Kollektivunterschrift zu zweien.  Publiziert: 11.04.2011 Meldungsnummer: 6116934
1. Ich speichere den oben genannten Text in eine Datei namens text_export.txt
2.

Code: Alles auswählen

 cat text_export.txt | cut -d: -f5-
Ausgabe:

Code: Alles auswählen

 11.04.2011 Meldungsnummer: 6116934
- Doch wie lagere ich die daten aus und entferne dieses Teilstück von der text_export.txt ?
- Wie mache ich dies mit mehreren Texten ?


greet;s satinez
Zuletzt geändert von satinez am 06.05.2011 23:09:16, insgesamt 2-mal geändert.

NeuKasselER
Beiträge: 15
Registriert: 22.10.2009 16:20:14

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von NeuKasselER » 06.05.2011 22:55:59

Moin moin, schau dir das mal an : Python OpenBooks.
Python ist schnell erlernbar und sehr mächtig, damit sollte dein Problem schneller gelöst sein und die weiter Verarbeitung gesichert.
Gruß der NeuKasselER

Benutzeravatar
FANA
Beiträge: 482
Registriert: 30.03.2005 17:50:55

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von FANA » 06.05.2011 23:05:31

satinez hat geschrieben: Später sollen diese Spalten und Werte in ein XML File gespeichert werden.
Muss es wirklich XML sein?
Schau dir mal recutils an. Du könntest deine Exceldaten nach CSV konvertieren und dann mit csv2rec in das REC format.

http://www.linux-magazin.de/layout/set/ ... full/56782

http://www.gnu.org/software/recutils/

Debian Paket gibt es auf http://apt.2flub.org/

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Text-Datei nach Datensatz trennen, schleife

Beitrag von Liffi » 06.05.2011 23:22:33

Oder JSON. Aber bitte kein XML :-).

Antworten