Saltar al contenido

Eliminando el retorno de carro en Mac OS X usando sed

Solución:

Es porque sed disponible en OSX no reconoce r como un carácter especial a diferencia del sed en Linux lo hace.

Puede usarlo de la forma en que lo está usando:

sed -i.bak $'s/r//' file

O esto:

sed -i.bak "s/$(printf 'r')//" file

O bien puedes usar tr en OSX:

tr -d 'r' < file

Otra solución portátil y flexible es:

sed -i.bak $'s/x0D//' file

Porque el carácter de retorno tiene el código ASCII 0D. Las sustituciones x funcionan para todas las versiones POSIX de sed, y puede hacer coincidir cualquier otro carácter problemático buscando el código ASCII. Para encontrar otras sustituciones válidas, ejecute man re_format o ver una tabla ASCII.

La / g final es necesaria para Linux porque el retorno de carro ( r) no finaliza la línea. Muchos editores de “texto sin formato” de Windows (por ejemplo, el Bloc de notas) terminan cada línea con un retorno de carro y una nueva línea ( r n), pero los Mac con OS 9 (ca. 2001) o anteriores terminaron cada línea de un archivo de “texto sin formato” con un solo r. Si está limpiando un archivo de Windows, la / g no es necesaria en ningún sistema * X. Si está en macOS, tampoco es necesario / g, porque macOS reconoce el único r como un final de línea.

(Un sistema Linux que lea un archivo Mac antiguo pensará que todo el texto está en una línea muy larga y solo convertirá la primera r. Si está en un sistema Linux y necesita conservar los saltos de línea de un archivo Mac antiguo,

sed -i.bak $'s/x0D/x0A/g' file

convierte cada r en n.)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *