Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Probleme mit Bash / Leerzeichen bzw. Umbruch entfernen

  1. #1
    Putzfrau
    Registriert seit
    Sep 2000
    Ort
    Stuttgart
    Beiträge
    199

    Probleme mit Bash / Leerzeichen bzw. Umbruch entfernen

    Hallo,

    ich habe eine html Datei, die von Excel generiert wurde. Jetzt möchte ich mit sed ein paar Sachen ändern.
    Das funktioniert nicht, weil bestimmte Tags mit einem Zeilenumbruch getrennt sind.
    Beispiel:
    1 <a
    2 href

    Bei der Suche nach '<a href' wird nichts gefunden.
    Wenn ich mit tr versuche alle zeilenumbrüche zu entfernen passiert bei mir
    folgendes:
    <a href
    (2 Leerstellen)

    Ich schaffe es nicht, den Zeilenumbruch sauber zu entfernen.
    Eine Alternative habe ich allerdings gefunden. Wenn ich mit vim eingebe '% j'
    wir die Datei nach dem Abspeichern für mich brauchbar.
    Die Frage ist nur wie ich das automatisieren kann.

    Hat jemand eine Idee?
    Vielleicht auf wie ich es hinbringe die Zeilenumbrüche auf der Bash so zu entfernen,
    dass keine zusätzlichen Leerstellen enstehen?

    Vielen Dank für Eure Untersütztung.

  2. #2
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Code:
    sed ':%s/\\n//g'
    Das sollte alle Umbrüche entfernen, Voraussetzung ist natürlich, dass nicht CR LF genutzt wird.

    Alternativ kann vim auch im Batchmodus aufgerufen werden. Damit würde "%j" auch funktionieren.

  3. #3
    Banned
    Registriert seit
    Feb 2005
    Beiträge
    1.151
    Vielleicht willst du erst von Windows auf Linux umstellen?
    Windows verwendet \r\n
    Linux \n
    Jede der folgenden Zeilen tut das.
    Code:
    dos2unix input.txt
    tr -d '\r' < input.txt > output.txt
    perl -pi -e 's/\r\n/\n/g' input.txt
    sed 's/^M$//' input.txt > output.txt
    sed 's/$'"/`echo \\\r`/" input.txt > output.txt

  4. #4
    Putzfrau
    Registriert seit
    Sep 2000
    Ort
    Stuttgart
    Beiträge
    199
    Danke für die Tipps!

    Ich habe einiges versucht. Leider ohne Erfolg.
    Wenn ich in vim mit set lists die Zeichen anschaue, ist am Zeilenende immer ein $.

    Führe ich ein
    Code:
    tr -d '\n'
    aus, habe ich zwei Leerzeichen zwischen meinem Tag.
    Es ist sehr komisch.

  5. #5
    Banned
    Registriert seit
    Feb 2005
    Beiträge
    1.151
    Zitat Zitat von Goldfinger Beitrag anzeigen
    Ich habe einiges versucht. Leider ohne Erfolg.
    Das ist ein sinnloser Satz.
    Kopiere die Befehle, die du versucht hast, hier herein, samt dem Ergebnis.
    Das hilft. Reden darüber nicht.

    Wenn ich in vim mit set lists die Zeichen anschaue, ist am Zeilenende immer ein $.
    Das Zeilenende selbst ist ein "nicht druckbares Zeichen". Das heißt, dass es auch auf dem Bildschirm nicht dargestellt werden kann.
    Deshalb repräsentiert das Dollarzeichen das Zeilenende.
    Dieses Verhalten gilt in jedem RegEx, in sed, vi und, und, und.

    Führe ich ein
    Code:
    tr -d '\n'
    aus, habe ich zwei Leerzeichen zwischen meinem Tag.
    Es ist sehr komisch.
    Zwar schrieb ich tr -d '\r' ....., aber du hast ja einiges probiert.

    Wenn Windows als Zeilenende ein \r\n verwendet, Linux aber nur ein \n, welches Zeichen wird man dann denn mit tr -deleten müssen? Das \n oder das \r ?

  6. #6
    Putzfrau
    Registriert seit
    Sep 2000
    Ort
    Stuttgart
    Beiträge
    199
    Ich habe das Problem gefunden. Schuld waren Leerzeichen am Zeilenanfang.
    Jetzt funktioniert tut tr -d '\n' wie es soll und mein Script funktioniert.

    Danke für die Unterstützung und fürs Kopfwaschen.
    Gruß
    GF

  7. #7
    Banned
    Registriert seit
    Feb 2005
    Beiträge
    1.151
    Es ist hilfreich, wenn du die Daten UND deine Versuche postest.
    Dann kann man das nachvollziehen und korrekte Antworten geben.

    Jetzt fürchte ich, bist du wieder auf einem Holzweg.
    Du entfernst noch immer das korrekte \n statt dem \r.
    Falls das stimmt, was du schreibst.

  8. #8
    eigentlich keine Blondine
    Registriert seit
    Mar 2010
    Beiträge
    931
    Betterworld, die Zeilenenden sollen gelöscht werden! Nicht Windows-Zeilenenden in Linux-Zeilenenden umgewandelt, sondern korrekte Linux-Zeilenenden gelöscht.
    Unter Linux eine .exe-Datei ausführen ist ganz einfach. Man nimmt eine beliebige unter Linux ausführbare Datei, benennt sie um in AusfuehrbareDatei.exe und führt sie aus.

  9. #9
    Banned
    Registriert seit
    Feb 2005
    Beiträge
    1.151
    @rstuby: Vielleicht. Vielleicht auch nicht.
    Wenn er das mit Excel erstellt hat, wie er schreibt, dann glaube ich immer noch, dass mein Weg der richtige wäre.
    Und in diesem Szenario würde dieses Phänomen auftreten können, dass das Löschen von Leerzeichen am Anfang einer Zeile, das Problem scheinbar löst
    .
    Und ja: Ich glaube, dass er die excelgenerierte Datei besser auf nach meinem Vorschlag bearbeiten sollte.

    Excelgenerierte Dateien kommen nun mal mit Windows \r\n

Ähnliche Themen

  1. shell - leerzeichen entfernen
    Von Scoutman im Forum Linux Allgemein
    Antworten: 12
    Letzter Beitrag: 29.08.07, 20:44
  2. SED und Leerzeichen in bestimmten Zeilen entfernen...
    Von fluppi im Forum Linux Allgemein
    Antworten: 3
    Letzter Beitrag: 15.09.06, 16:06
  3. Leerzeichen entfernen aus Dateinamen
    Von clumsy im Forum Linux Allgemein
    Antworten: 7
    Letzter Beitrag: 18.03.04, 10:33
  4. Zeilen Umbruch Probleme
    Von jensemann im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 16.05.02, 15:10
  5. Leerzeichen aus Dateinamen entfernen
    Von rup im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 29.04.02, 15:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •