¿Cómo eliminar Ctrl-M de archivos donde dos2unix, perl, tr y sed no están presentes?


9

Suponga que está trabajando en un servidor UNIX muy antiguo, donde dos2unix, perl, tr, y sedno está presente. ¿Cómo se pueden convertir archivos de DOS a formato UNIX ?


sed está permitido?
elmarco

@elmarco: no :(
Hemant

99
¿Qué edad debe tener un servidor Unix para no tener try sed? sedes viejo ........ iirc,
xenoterracide

1
¿Estaría exo edestaría disponible en un sistema como ese? No lo llamaría unix si no hay tro sed.
MattBianco

3
No sed? ¿¡De Verdad!? Fuera de interés, ¿cuál es el sistema? Como Gilles y MattBianco señalan, probablemente todavía tendría edal menos.
Mikel

Respuestas:


12

Creo que te estás refiriendo a eliminar el caret-M al final de las líneas. Puede usar buscar y reemplazar en vi para hacer esto.

En vi normalmente lo hago: (donde "^" representa CTRL):

:%s/^V^M//g

Que se muestra en la pantalla como:

:%s/^M//g

gracias que funcionó :). Creo que es una solución muy portátil.
Hemant

44
También puede usar sed para hacer lo mismo sin tener que vim el archivo: sed -e '% s / ^ V ^ M // g' nombre de archivo Eso también se mostrará en la pantalla como sed e '% s / ^ M // g 'nombre de archivo En general, si puede buscarlo / reemplazarlo en vim, el comando es prácticamente el mismo en sed.
Gabe.

2
@gabe: la solución sed es en realidad aún más portátil +1 :)
wzzrd

@wzzrd, sedy viambos están especificados por POSIX , y ese vicomando no usa ninguna extensión de Vim.
Comodín

@jjclarkson, ¿qué significa ^Vy '^ M'?
cokedude

6

Un servidor sin tro sedtendría que ser realmente viejo, o faltan algunos comandos básicos. Ojalá edesté allí; existió en la primera edición de Unix .

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

donde ^V^Msignifica escribir Ctrl+ Vluego Ctrl+ M(para ingresar un avance de línea literal). Si sabe que todas las líneas terminan en CR LF, puede usar 1,$s/.$//en su lugar (elimine indiscriminadamente el último carácter de cada línea).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.