¿Cómo puedo hacer que este comando SED sea más portátil?

¿Cómo puedo hacer que este comando SED sea más portátil?

Estoy usando el siguiente sedcomando:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'

Que se normaliza así:

4330M-p  ->  Ver<newline>

Esto funciona bien con GNU SED, pero con BSD SED en Mac OS X, el \n se convierte en algo nasí:

4330M-p  ->  Vern

Para normalizar algunos resultados que contienen un número de versión que cambia con el tiempo a una cadena estática, seguida de una nueva línea. Esto se utiliza como parte de las pruebas en las que la salida después seddel procesamiento se compara diffcon un archivo dorado conocido y no queremos fallas debido al cambio del número de versión y además necesitamos agregar una nueva línea para nuestros propósitos.

¿Cómo puedo reemplazar con una cadena que agregue una nueva línea de una manera que funcione tanto en la versión GNU como en la BSD sed, o debería simplemente instalar GNU seden Mac OS X porque esto no se puede hacer?

Respuesta1

Puedes hacer una nueva línea literal en tu script, así:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'

información relacionada