Wie entferne ich Strg-M aus Dateien, in denen dos2unix, perl, tr und sed nicht vorhanden sind?


9

Angenommen , Sie arbeiten an einem sehr alten Unix - Server , auf dem dos2unix, perl, tr, und sedsind nicht vorhanden. Wie können Sie Dateien vom DOS- in das Unix- Format konvertieren?


sed ist erlaubt?
Elmarco

@elmarco: nein :(
Hemant

9
Wie alt muss ein Unix-Server sein, um nicht zu haben trund sed? sedist alt ........ iirc,
Xenoterracide

1
Wäre exoder edwäre es auf einem solchen System verfügbar? Ich würde es nicht Unix nennen, wenn es kein troder gibt sed.
MattBianco

3
Nein sed? Ja wirklich!? Was ist das System aus Interesse? Wie Gilles und MattBianco betonen, hätte es wahrscheinlich immer noch edmindestens.
Mikel

Antworten:


12

Ich denke, Sie beziehen sich auf das Entfernen des Caret-M am Ende der Zeilen. Sie können dazu in vi suchen und ersetzen.

In vi mache ich normalerweise: (wobei "^" STRG darstellt):

:%s/^V^M//g

Was auf dem Bildschirm angezeigt wird als:

:%s/^M//g

danke das hat funktioniert :). Ich denke, es ist eine sehr tragbare Lösung.
Hemant

4
Sie können sed auch verwenden, um dasselbe zu tun, ohne die Datei vimieren zu müssen: sed -e '% s / ^ V ^ M // g' Dateiname Dies wird auch auf dem Bildschirm als sed e '% s / ^ angezeigt M // g 'Dateiname Wenn Sie ihn in vim suchen / ersetzen können, ist der Befehl in sed im Allgemeinen praktisch der gleiche.
gabe.

2
@gabe: die sed lösung ist eigentlich noch portabler +1 :)
wzzrd

@wzzrd sedund viwerden beide von POSIX angegeben , und dieser viBefehl verwendet keine Vim-Erweiterungen.
Wildcard

@jjclarkson was bedeutet ^Vund '^ M'?
Kokedude

6

Ein Server ohne troder sedmüsste wirklich alt sein oder einige grundlegende Befehle fehlen. Hoffentlich edist da; es existierte in der Unix-Erstausgabe .

ed /path/to/file
1,$s/^V^M$//
w
q

wobei ^V^Mmittels Eingabe Ctrl+ Vdann Ctrl+ M(Eingabe eine wörtliche Zeilenvorschub). Wenn Sie wissen, dass alle Zeilen mit CR LF enden, können Sie 1,$s/.$//stattdessen verwenden (entfernen Sie wahllos das letzte Zeichen in jeder Zeile).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.