Ich bin dabei eine *.pdf in eine *.csv Datei zu konvertieren. Wobei ich die pdf zunächst in eine txt wandle um danach daraus eine csv zu machen. Leider schaffe ich es nicht die spaces richtig zu wandeln.
Die einzelnen Spalten sind bei der Umwandlung von der pdf zu einer txt Datei durch spaces getrennt. Von Spalte zu Spalte sind es immer mehr als 2 spaces Zwischenraum. Da steht nie nur ein einzelnes space. Leider habe ich aber Felder mit einem Inhalt wie Müller / Hameln, wo vor und nach dem / jeweils ein einzelner space liegt. Diese spaces möchte ich jedoch erhalten.
Mit
sed -e "s/[[:space:]]\+/,/g" output-layout.txt > ergebnis.csv
oder besser
tr -s ' ' < output-layout.txt | tr ' ' ',' > ergebnis.csv
kann ich beliebig viele spaces in ein einzelnes Komma umwandeln. Leider ergibt das auch Müller,/,Hameln. Wie schaffe ich es, das nur zwei und mehr spaces zu einem einzelnen Komma umgewandelt werden?
Ja, ich könnte jetzt Müller / Hameln via sed zu Müller+/+Hameln umwandeln und später wieder zu Müller / Hameln rückwandeln, aber das möchte ich nicht.
(gelöst) spaces durch Komma ersetzen, aber nicht wenn nur ein space
(gelöst) spaces durch Komma ersetzen, aber nicht wenn nur ein space
Zuletzt geändert von medias am 10.08.2018 13:24:17, insgesamt 1-mal geändert.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: spaces durch Komma ersetzen, aber nicht wenn nur ein space
sed --regexp-extended -e "s/[[:space:]]{2,}/,/g" output-layout.txt > ergebnis.csv
Nettes deutsches Tutorial für Regex
https://danielfett.de/de/tutorials/tuto ... ausdrucke/
Nettes deutsches Tutorial für Regex
https://danielfett.de/de/tutorials/tuto ... ausdrucke/
Re: spaces durch Komma ersetzen, aber nicht wenn nur ein space
Super @heisenberg, danke!
Re: spaces durch Komma ersetzen, aber nicht wenn nur ein space
Die Zeichenklasse [:space:] umfasst neben einem Leerzeichen noch andere Leerraumzeichen (Tabulator, Zeilenumbruch, Formfeed, Rücklauf, vertikal Tab [\t\n\f\r\v]). :[blank:] mit Leerzeichen und Tabulator wäre näher, aber auch das ist ja schon zuviel. \+ bedeutet 1 oder mehr, du willst zwei oder mehr. Extended Regex ermöglicht die Zeichen {}+ ohne vorangestellten \ zu übergeben.medias hat geschrieben:10.08.2018 12:22:23Wie schaffe ich es, das nur zwei und mehr spaces zu einem einzelnen Komma umgewandelt werden?
Code: Alles auswählen
sed 's/ \+/,/g'
//bzw.
sed 's/ */,/g'
//oder aber
sed 's/ \{2,\}/,/g'