sed & Zeilenende

  • Hallo


    ich komme mit sed nicht so richtig klar. Ziel ist es das Zeilenende in CRLF umzuwandeln. unix2dos ist nicht verfügbar.


    Folgende Zeile habe ich ohne Erfolg probiert:

    Code
    echo "huhu" | sed s/\n/\r\n/ | hexdump -bc
    
    
    0000000 150 165 150 165 012
    0000000   h   u   h   u  \n
    0000005

    Mit dieser awk-Variante geht es:

    Code
    echo "huhu" | awk '{ printf "%s\r\n", $1 }' | hexdump -bc
    
    
    0000000 150 165 150 165 015 012
    0000000   h   u   h   u  \r  \n
    0000006

    Mit dieser sed-Variante geht es auch:

    Code
    echo "huhu" | sed -r "s/^(.*)$/\1\r/" | hexdump -bc
    
    
    0000000 150 165 150 165 015 012
    0000000   h   u   h   u  \r  \n
    0000006

    Was ist an der ersten Variante mit sed falsch?



    Edit:


    ich habs inzwischen gefunden meine kürzeste Variante ist jetzt:

    Code
    echo "huhu" | sed -e "s/$/\r/" | hexdump -bc

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

    Einmal editiert, zuletzt von HFlor ()

  • Yohoo!
    Der Vollstaendigkeit halbe:


    Das geht auch mit "tr":

    Code
    tr -d '\015' dateiname> dateiname.ohne_crlf

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Zitat

    Original von knebb
    Yohoo!
    Der Vollstaendigkeit halbe:


    Das geht auch mit "tr":

    Code
    tr -d '\015' dateiname> dateiname.ohne_crlf


    Das erwirkt aber das Gegenteil vom gewuenschten Ergebnis ;)

  • Nun würde ich aber auch gerne wissen warum das nicht geht?

    Code
    echo "huhu" | sed s/\n/\r\n/ | hexdump -bc
    
    
    0000000 150 165 150 165 012
    0000000   h   u   h   u  \n
    0000005


    Ich sehe keinen Fehler

  • Zitat

    Original von decembersoul
    Nun würde ich aber auch gerne wissen warum das nicht geht?

    Code
    echo "huhu" | sed s/\n/\r\n/ | hexdump -bc
    
    
    0000000 150 165 150 165 012
    0000000   h   u   h   u  \n
    0000005


    Ich sehe keinen Fehler


    sed findet kein \n da es eine Zeile eben nur bis ausschliesslich \n sieht.
    Das \n ist fur sed das $ am Ende.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!