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

Print


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.




v.1111111101010101010101001010101010101010101101011111111111111111100000010101010101010101010101000000101110101010101010101010
101010101010101001010100101010101010101010101111111111111111111111111111111111111111111111111111111111111111111000000000000000
0000000000





More text is inserted here.



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

Entradas populares de este blog

Análisis de conexiones TIME_WAIT

Agregar un usuario a un grupo secundario

Pluging de HAProxy para Collectd.