Buscar aquí

01 diciembre 2016

obtener como resultado la entrada pero recortada

Al momento de trabajar con texto, puede ser necesario recortar la salida de este texto, por ejemplo,

echo 12.3456789

es necesario que muestre solo 3 decimales:

echo 12.3456789 | sed -r 's/([0-9]+\.[0-9][0-9][0-9])[0-9]+/\1/g'
12.345

La magia está en el uso de paréntesis en la sección de formato y en la sección de reemplazo el \1, esto significa:

- los parentesis redondos, marcan una sección que se recordara.
- el \1 indica que se usará el primero bloque marcado en el formato.

Explicando la expresión regular va a recordar cuando venga 1 o más números entre 0 y 9, seguido por el caracter de punto, seguido de 3 números, cada uno entre 0 y 9.  Este es el bloque a recordar.  Además, la expresión contempla que debe venir seguido de un numero de 1 o más cifras entre 0 y 9, pero esto no se recuerda pues no está entre paréntesis. 

El -r en el sed es para que indicarle que use expresiones regulares extendidas, pues el uso de estos parámetros no son parte del conjunto estandard de opciones.

No hay comentarios.:

Publicar un comentario