sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen

Diskutiere sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hi, ich hab mir schon einen Wolf abgesucht im Netz, ich kriegs nicht hin: Eine Text-Datei enthält z.B. folgende 2 Zeilen: Die Teilnahme...

  1. nfidia

    nfidia Jungspund

    Dabei seit:
    06.03.2009
    Beiträge:
    19
    Zustimmungen:
    0
    Hi,

    ich hab mir schon einen Wolf abgesucht im Netz, ich kriegs nicht hin:

    Eine Text-Datei enthält z.B. folgende 2 Zeilen:

    Ich möchte, dass das Wort "Maßnahmen" nicht durch ein Bindestrich und einen Zeilenumbruch getrennt ist. Die beiden Zeilen sollen in eine zusammengefasst werden:

    Den Zeilenumbruch löschen krieg ich mit sed nicht hin:

    Code:
    sed 's/\n//' Datei1 > Datei2
    => geht nicht. Der Zeilenumbruch bleibt bestehen

    Mit dem Programm tr können auch Zeichen ersetzt werden. Das klappt auch:

    Code:
    cat Datei1 | tr -d "\n" > Datei2
    Dann bleibt aber der Bindestrich übrig:

    Ich habe nicht rausbekommen, wie ich dem Programm beibringe, dass es sowohl den Bindestrich wie auch den Zeilenumbruch in Form eines Strings wie "-\n" löscht.

    PS: Diesmal bin ich unter Debian 4.x unterwegs, nicht mit Cygwin.
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Aqualung, 06.04.2009
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
  4. nfidia

    nfidia Jungspund

    Dabei seit:
    06.03.2009
    Beiträge:
    19
    Zustimmungen:
    0
    Dankeschön

    Hi Aqualung,

    vielen Dank für diese Befehlszeile :) - da wäre ich nie drauf gekommen, ich habe bisher nur Basiskenntnisse, würde ich mal sagen, was sed betrifft.

    Die Befehlszeile funktioniert aber nicht in jeder Zeile wie gewünscht.

    Mir fiel auf, dass wenn drei Zeilen in der Quelldatei so aussehen:

    , dass das Ergebnis dann so aussieht:

    Außerdem gibt es in einer der Quelldateien und an auch folgenden Zeilenaufbau:

    Code:
    1. Dies ist die erste Zei-
      le und dies ist die zweite Zeile
    Das Ergebnis ist dann:

    Deswegen mache ich das so:

    Code:
    sed 'N;s/-\n//;P;D;' Datei > refined_1.txt
    sed 's/  //g' refined_1.txt > refined_2.txt # lösche jeweils zwei Leerzeichen
    sed 's/   //g' refined_2.txt > refined_3.txt # lösche jeweils drei Leerzeichen
    sed 'N;s/-\n//;P;D;' refined_3.txt > refined_4.txt
    sed 'N;s/-\n//;P;D;' refined_4.txt > result.txt
    Das ist zwar quick and dirty, aber das Ergebnis - zumindest bei der einen Datei, die ich untersucht habe, ist das gewünschte ;-)
     
  5. #4 hostmolch, 07.04.2009
    hostmolch

    hostmolch Grünschnabel

    Dabei seit:
    07.04.2009
    Beiträge:
    3
    Zustimmungen:
    0
    Eine weitere effizientere Möglichkeit wäre so:

    > cat test.sh

    #!/bin/bash
    while read line;
    do
    if [ "${line: -1}" = "-" ];then
    echo -n ${line:0:${#line}-1};
    else
    echo $line;
    fi
    done < textfile.txt

    > cat textfile.txt

    aaa bbb ccc-
    ccc ddd eee-
    eee fff ggg
    ggg

    > ./test.sh
    aaa bbb cccccc ddd eeeeee fff ggg
    ggg


    lg host


    ps: is jetzt ohne form auch nur quick n dirty ...
     
  6. nfidia

    nfidia Jungspund

    Dabei seit:
    06.03.2009
    Beiträge:
    19
    Zustimmungen:
    0
    Hi hostmolch,

    vielen Dank für Deine Mühe!

    Hm, vielleicht sollte ich einfach einen Indexierer nehmen.

    Denn ich manipuliere die Textdateien in der beschriebenen Weise (getrennte Wörter wieder zusammenfügen, dabei nacheinander folgende Leerzeichen mit einer Menge >1löschen, damit ich anschließend mittels grep in den Textdateien nach kompletten Begriffen/Strings suchen kann.

    Ich guck mir mal

    http://regain.sourceforge.net/?lang=de

    an, vielleicht macht ja der eingesetzte "intelligente" Indexer genau das, was ich mir vorstelle?
     
  7. #6 hostmolch, 08.04.2009
    hostmolch

    hostmolch Grünschnabel

    Dabei seit:
    07.04.2009
    Beiträge:
    3
    Zustimmungen:
    0
    Jo mach das mal falls du noch was brauchst melden.

    lg Host
     
Thema: sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen
Besucher kamen mit folgenden Suchen
  1. zeilenumbruch entfernen sed

    ,
  2. linux sed zeilenumbruch

    ,
  3. linux sed zeilenumbruch entfernen

    ,
  4. sed zeilenumbruch löschen,
  5. cygwin command gegen neue Version ersetzen,
  6. unix entfernen von Zeilenschaltungen,
  7. unix shell zeilen verbinden tr,
  8. sed löschen zeilenumbruch,
  9. suchen ersetzen mit tr,
  10. sed minuszeichen,
  11. durch bindestrich getrennte Wörter zusammenfügen java,
  12. sed bindestrich,
  13. bash zeilenumbruch entfernen,
  14. sed text mit zeilenschaltung ersetzen,
  15. sed lösche zeilenumbrüche ,
  16. sed windows zeilenumbruch,
  17. sed zeilenumbrüche entfernen,
  18. zeilenumbruch in sed ersetzen,
  19. sed zeilenumbruch ersetzen,
  20. zeilenumbruch bash anhängen,
  21. sed lösche zeilenumbruch
Die Seite wird geladen...

sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen - Ähnliche Themen

  1. Script Zeilenumbruch -> Leerzeichen

    Script Zeilenumbruch -> Leerzeichen: Wie muß folgendes Script für die Bash aussehen: Ich habe eine Textdatei mit einer Liste von (distributionseigenen)-Programmen, die ich...
  2. Wert an Zeile anhängen, kein Zeilenumbruch

    Wert an Zeile anhängen, kein Zeilenumbruch: Hallo, ich durchsuche (grep) eine Datei und möchte einzelne Werte herausfiltern (cut) und diese in eine andere Datei (csv) speichern. Nun soll...
  3. Zeilenumbruch in Dateiname auf Konsole eingeben

    Zeilenumbruch in Dateiname auf Konsole eingeben: Hallo, kann mir jemand sagen, wie ich einen Zeilenumbruch im Dateinamen auf der Konsole eingebe? Z.b. wenn ich eine Datei mit "touch" erstellen...
  4. Problem mit sed Zeilenumbruch

    Problem mit sed Zeilenumbruch: Hallo, ich möchte mit einem Perl Script über sed eine Zeile in eine Datei einfügen. Ich sende Befehle über rsh mit folgendem Befehl:...
  5. Abschl. Zeilenumbruch falls noch nicht vorhanden

    Abschl. Zeilenumbruch falls noch nicht vorhanden: Hallo Forum! Ich ersetze in einer Liste von Dateien einen bestimmten String mit "sed", um diese zu anonymisieren. Wenn die Datei keinen...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden