Forum: PC-Programmierung grep oder fgrep unter Windows - csv Zeilenumbruch fehlt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ingo R. (ingo_r327)


Bewertung
2 lesenswert
nicht lesenswert
Guten Tag liebes Forum, Ihr wart mir immer eine Hilfe!

Doch nun zu meinem Problem.
grep -Zeilenumbrüche fehlen-


Die Lösung muß in einer Batch erfolgen, die zwischen Programm "A" und 
"B" eine Datei übergibt.

Programm "A" gibt eine CSV mit 24 Spalten und ";" als Delimiter aus. 
Jede Zeile (von etwa 15.000) ist mit Zeilenumbruch abgeschlossen.

In der ersten Spalte steht true oder false. Die Datensätze mit true 
sollen
entfernt werden.
Programm "B" übernimmt die verbleibenden false Zeilen (etwa 4000) zur 
Weiterverarbeitung.

Bisher habe ich das in einer Batch gelöst, allerdings mit herben 
Laufzeitproblemen.
Ich lud von unxutils.sourceforge.net die GNU utilities for Win32 
herunter und den Einzeiler
1
grep -w "false" \\SERVERIP\Daten\0-PROJ-0\trim\Verkäufe.txt >\\SERVERIP\Daten\0-PROJ-0\trim\Verkäufe.csv

in die Batch eingebaut.
Läuft auch prima, nur fehlen in der von grep erstellten Datei die 
Zeilenumbrüche in der CSV (Zeile mit hex 0A abgeschlossen, statt HEX 0D 
0A.

Wie kann die Zeilenumbrüche mit übergeben? Eventuell bin ich blind.
In der unter WIN laufenden Batch hatte ich zunächst die Codepages in 
Verdacht und unter CHCP 850 und CHCP1252 getestet. Erfolglos.
Mit fgrep das Gleiche.
Vielleicht hat jemand eine Idee.

Gruß rubcom und danke im Vorraus.

von Daniel A. (daniel-a)


Bewertung
1 lesenswert
nicht lesenswert
Mit cygwin Compilierte unix tools verwenden linux line endings. Du 
könntest die Ausgabe über sed leiten:
1
grep -w "false" bla.csv | sed 's/$/\r/' > bla2.csv

: Bearbeitet durch User
von Ingo R. (ingo_r327)


Bewertung
0 lesenswert
nicht lesenswert
Danke Daniel, für die schnelle Hilfe

kann das leider erst morgen ausprobieren.
Melde mich mit dem Ergebnis.

Gruß Ingo

von Vlad T. (vlad_tepesch)


Bewertung
1 lesenswert
nicht lesenswert
Ingo R. schrieb:
> Ich lud von unxutils.sourceforge.net die GNU utilities for Win32

google mal nach gnuwin32.
Ich finde die irgendwie besser, als die unxutils.

: Bearbeitet durch User
von Kommandozeile vor dem Frühstück für Alle! (Gast)


Bewertung
2 lesenswert
nicht lesenswert
> In der ersten Spalte steht true oder false.

> grep -w "false" bla.csv



Ich hoffe "false" steht in keiner anderen Datenspalte: diese Zeilen 
werden ebenso selektiert.

Mit "^" wird explizit der Zeilenanfang spezifiziert (und somit eine RE 
gegeben, sonst würde ja das primitive 'find' von DOS genügen...) und mit 
";" der Spaltentrenner.

Option -U weist grep an, die Datei als binary zu behandeln, lässt also 
die Zeilenende ohne Konversion stehen.
1
grep -wU "^false;" bla.csv

Option -i macht die Sache unabhängig von Gross-/Kleinschreibung.

von guest (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Kommandozeile vor dem Frühstück für Alle! schrieb:
> sonst würde ja das primitive 'find' von DOS genügen

Und falls man mehr braucht gibt es auch noch 'findstr', dann klappt es 
auch mit RE und man kann auf den Umweg über Unix-Tool komplett 
verzichten

von Ingo R. (ingo_r327)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,
klappt... allerdings nur, unter Linux als Ein(zwei)zeiler.
Unter Windows in der Batch wird es wieder ein Mehrzeiler.

Danke, hat aber geholfen.
Gruß Ingo

von Ingo R. (ingo_r327)


Bewertung
0 lesenswert
nicht lesenswert
guest schrieb:
> Kommandozeile vor dem Frühstück für Alle! schrieb:
>> sonst würde ja das primitive 'find' von DOS genügen
>
> Und falls man mehr braucht gibt es auch noch 'findstr', dann klappt es
> auch mit RE und man kann auf den Umweg über Unix-Tool komplett
> verzichten
Hallo

Bisher wurde es mit find gelöst. Danke auch für die ausführliche 
Erläuterung zum grep.
-U binary war die Lösung.

Gruß Ingo

von Ingo R. (ingo_r327)


Bewertung
0 lesenswert
nicht lesenswert
Vlad T. schrieb:
> Ingo R. schrieb:
>> Ich lud von unxutils.sourceforge.net die GNU utilities for Win32
>
> google mal nach gnuwin32.
> Ich finde die irgendwie besser, als die unxutils.

Übrigens, das mit den gnuwin32 zu machen ist aus einem alten Thread von 
Dir :-))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.