1 votos

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

Estoy usando lo siguiente sed comando:

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 un n así:

4330M-p  ->  Vern

Para normalizar una salida que contiene 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 de sed el procesamiento se compara a través de diff con un archivo dorado conocido y no queremos fallos debidos al cambio del número de versión y además necesitamos que se añada una nueva línea para nuestros propósitos.

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

0voto

tekknolagi Puntos 330

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\
/'

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: