Saltar al contenido

Eliminación de retorno de carro en Mac OS X usando sed

Xavier, miembro de este staff, nos hizo el favor de redactar esta crónica ya que domina perfectamente este tema.

Solución:

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

Puedes usarlo de la forma en que lo estás 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.

El /g final es necesario 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) finalizan cada línea con un retorno de carro y una nueva línea (rn), pero las Mac con OS 9 (aprox. 2001) o anteriores finalizaban cada línea de un archivo de "texto sin formato". con un solo r. Si está limpiando un archivo de Windows, el /g no es necesario en ningún sistema *X. Si está en macOS, el /g tampoco es necesario, porque macOS reconoce el único r como un final de línea.

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

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.