Introducción a sed III
Transformación de caractéres (lower-case to upper-case).
La siguiente
sentencia de sed transforma cada carácter en la posición de la
cadena abc en su equivalente ABC.
echo
"verde
que te quiero verde. Verde viento, verdes ramas"
| sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJ KLMNOPQRSTUVWXYZ/' |
El resultado es el
siguiente.
VERDE QUE TE QUIERO VERDE. VERDE VIENTO, VERDES RAMAS |
Este
comando en sed es usualmente empleado para la depuración o el cambio
en el flujo de la ejecución de los scripts. Su función es
mandar a la salida estándar (pantalla) el contenido del pattern
space y por lo general se utiliza antes de los comandos N,
d y b, cambiando así el ya mencionado flujo. Si se
suprime la salida (-n), solo veremos los cambios realizados,
en caso contrario (no acompañar la ejecución de sed con la
supresión de la salida) se duplicarán las entradas presentadas en
pantalla.
Print.sed
/para/
{ p } |
sed -n -f print.sed para.txt |
Archivo de entrada
para.txt
This is something. I am trying sed in multiline. |
Resultado
Imprimir el número de línea.
Algunas
veces requerimos saber el número de línea del archivo que afectamos
con una substitución. Para ello sed nos arma con un comando el cual
nos indica la línea en que está la coincidencia.
Print.sed
/blank/
{ = p } |
sed -n -f print.sed multiline.txt |
El contenido del
archivo de entrada multiline.txt es el siguiente.
Consult
Section 3.1 in Owner and Operator Guide for a description of the tape drivers available on your system. blank Look in the Owner and Operator Guide shipped with your system. blank Two manuals are provided and including the Owner and Operator Guide and the User Guide. blank The Owner and Operator Guide is shipped with your system. |
La
salida del comando es como a continuación se muestra. El número que
antecede a las ocurrencias es el número de línea.
4
blank 6 blank 9 blank |
Next
Este
comando es muy interesante y de mucha ayuda. En lo personal lo he
utilizado algunas veces para retirar contenido que viene después de
las líneas que presentan el address. Siendo más precisos,
este comando se utiliza para tomar una acción con la siguiente
línea a la empatada. Ojo, importante es saber que imprime la
siguiente línea una vez alcanzada la última instrucción del
script. Veamos un ejemplo para poner en claro las cosas.
Next.sed
/para/
{ n /^$/d } |
Para.txt es el
nombre del archivo de entrada.
This is something. I am trying sed in multiline. v.1111111101010101010101001010101010101010101101011111111111111111100000010101010101010101010101000000101110101010101010101010 101010101010101001010100101010101010101010101111111111111111111111111111111111111111111111111111111111111111111000000000000000 0000000000 More text is inserted here. |
Ejecutamos el script
de sed
sed -f next.sed para.txt |
Como bien pueden
apreciar, el espacio inmediatamente de la coincidencia ‘para’
ha sido eliminado.
This is something. I am trying sed in multiline. v.1111111101010101010101001010101010101010101101011111111111111111100000010101010101010101010101000000101110101010101010101010 101010101010101001010100101010101010101010101111111111111111111111111111111111111111111111111111111111111111111000000000000000 0000000000 More text is inserted here. |
Comentarios
Publicar un comentario