modificación de registros comando sed
DESCRIPTION
Comando sed - Linux - Modificacion de registrosTRANSCRIPT
PROF. PABLO MACÓNPABLOMACON@GMAIL .COM
HT TP: / /SO I I - I TS .BLOGSPOT.COM
MODIFICACIÓN DE REGISTROSCOMANDO SED
DE LAS CLASES PASADAS
Usos de grep:• grep localiza en la entrada estándar un patrón de búsqueda y muestra en la salida estándar solo la o las líneas en las que se encontró el patrón
grep “usuario” /etc/passwd
DE LAS CLASES PASADAS
Usos de grep:• Para comprobar que el artículo ingresado no esté repetido• tengo que usar variables y para utilizar el valor de las variables en grep tengo que tener cuidado de usar comillas dobles “”
DE LAS CLASES PASADAS
Usos de grep:•Con la opción -v nosotros hacíamos lo contrario, mostramos las líneas en las que no se encuentra el patrón, lo podíamos usar para eliminar filas o un producto
DE LAS CLASES PASADAS
Usos de grep:• Pero tenemos que recordar que grep no modifica los archivos de origen, solo muestra. Eso quiere decir que si yo quiero modificar el archivo original tengo que aplicar un algoritmo: ¿cuál?
DE LAS CLASES PASADAS
Usos de grep:1.Re-direccionar la salida a un
auxiliar2.Eliminar el archivo original y
cambiar el nombre al auxiliar (o con mv todo en una sola entrada)
DE LAS CLASES PASADAS
Usos de cut:•Con este comando hacíamos el corte vertical, es decir, tomamos texto con columnas de stdin y mostramos una sola columna en stdout•O varias columnas si usamos -f1,2 ó -f1-3
DE LAS CLASES PASADAS
Usos de cut:• Entonces teníamos que darle el delimitador que usamos y el número de columna• También podemos usar tuberías, recuerden:
ls -l |cut -f4 -d:
COMANDO SED
MODIFICACIÓN
En una base de datos (y en el proyecto) podemos hacer tres cosas con los datos guardados:• Ingresar un nuevo dato (Alta)•Borrar un dato guardado (Baja)•Cambiar un dato guardado (Modificación)
MODIFICACIÓN
Ya vimos ingresar datos• con read le pedimos al usuario que ingrese un dato• Lo guardamos en una variable•Redireccionamos con echo >> tabla
MODIFICACIÓN
Ya vimos borrar datos•con read le pedimos al usuario que ingrese un dato a borrar•Lo guardamos en una variable•Usamos grep -v “$variable” tabla
MODIFICACIÓN
Para modificar vamos a usar sed•Este comando es un editor de líneas, es decir que el tratamiento (como grep) es a las líneas. Cuando le pedimos modificar algo, modifica toda la línea
MODIFICACIÓN
Para modificar vamos a usar sed•Sintaxis:sed [opciones] [patrón] archivo
sed acepta expresiones regulares igual que grep
MODIFICACIÓN
Usos de sed•Borrar una línea (dándole el número de línea)
sed “##d” archivoBorra la línea ## del archivo y muestra en pantalla
MODIFICACIÓN
Usos de sed•Vamos a borrar nuestro usuario de /etc/passwd• Primero contamos en qué línea estamos
cat -n /etc/passwd | grep “usuario”
MODIFICACIÓN
Usos de sed•Vamos a borrar nuestro usuario de /etc/passwd
•Ahora que ya sabemos nuestra línea:sed “##d” /etc/passwd
MODIFICACIÓN
Usos de sed• Lo que acabamos de hacer fue modificar el archivo /etc/passwd y borrar nuestro usuario
• ¿es eso cierto?
MODIFICACIÓN
Usos de sed•No, lo que hicimos fue mostrar en pantalla una versión modificada del archivo, pero el original sigue estando igual que siempre ¿cómo guardamos los cambios?
MODIFICACIÓN
Usos de sed•Con el mismo algoritmo que ya utilizamos para modificar un archivo, es decir re-direccionar la salida a un archivo • Pero como no somos administradores etc/passwd no puede ser cambiado
MODIFICACIÓN
Usos de sed• Esa fue otra forma de borrar, pero lo interesante de sed es que podemos modificar una línea, no solo borrarla
sed “s/patrón_busq/nuevo_patron/” file
MODIFICACIÓN
Usos de sedsed “s/usuario/nuevo/” /etc/passwd
De este modo yo modifico la primera ocurrencia de usuario, solamente la primera
MODIFICACIÓN
Usos de sedPara modificar todas tengo que poner al final del patrón la opción “g”sed “s/usuario/nuevo/g” /etc/passwd
MODIFICACIÓN
Usos de sed•Acá tenemos que tener en cuenta las comillas como hablamos antes, si queremos interactuar con el usuario debemos usar el valor de las variables y para eso debemos usar “ ” no ‘ ’
MODIFICACIÓN
Ejercicio:¿Cuáles serían los pasos para modificar un artículo en una tabla con el siguiente formato:ID:MARCA:MODELO:PRECIO(el ID no se puede cambiar)?
MODIFICACIÓN
Ejercicio:•Pedir al usuario el número de artículo•Verificar que el artículo exista•Guardar datos originales en variables (cut)•Pedir al usuario nuevos datos (guardarlos en variables)
MODIFICACIÓN
Ejercicio:•Utilizar sed “s/$orig/$nuevos” tabla•Redireccionar eso a un archivo auxiliar•Usar mv auxiliar original (ojo no pide confirmación de borrado)