Modificación de registros comando sed

27
PROF. PABLO MACÓN [email protected] HTTP://SOII-ITS.BLOGSPOT.COM MODIFICACIÓN DE REGISTROS COMANDO SED

description

Comando sed - Linux - Modificacion de registros

Transcript of Modificación de registros comando sed

Page 1: Modificación de registros   comando sed

PROF. PABLO MACÓNPABLOMACON@GMAIL .COM

HT TP: / /SO I I - I TS .BLOGSPOT.COM

MODIFICACIÓN DE REGISTROSCOMANDO SED

Page 2: Modificación de registros   comando 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

Page 3: Modificación de registros   comando sed

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 “”

Page 4: Modificación de registros   comando sed

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

Page 5: Modificación de registros   comando sed

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?

Page 6: Modificación de registros   comando sed

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)

Page 7: Modificación de registros   comando sed

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

Page 8: Modificación de registros   comando sed

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:

Page 9: Modificación de registros   comando sed

COMANDO SED

Page 10: Modificación de registros   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)

Page 11: Modificación de registros   comando sed

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

Page 12: Modificación de registros   comando sed

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

Page 13: Modificación de registros   comando sed

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

Page 14: Modificación de registros   comando sed

MODIFICACIÓN

Para modificar vamos a usar sed•Sintaxis:sed [opciones] [patrón] archivo

sed acepta expresiones regulares igual que grep

Page 15: Modificación de registros   comando sed

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

Page 16: Modificación de registros   comando sed

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”

Page 17: Modificación de registros   comando sed

MODIFICACIÓN

Usos de sed•Vamos a borrar nuestro usuario de /etc/passwd

•Ahora que ya sabemos nuestra línea:sed “##d” /etc/passwd

Page 18: Modificación de registros   comando sed

MODIFICACIÓN

Usos de sed• Lo que acabamos de hacer fue modificar el archivo /etc/passwd y borrar nuestro usuario

• ¿es eso cierto?

Page 19: Modificación de registros   comando sed

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?

Page 20: Modificación de registros   comando sed

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

Page 21: Modificación de registros   comando sed

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

Page 22: Modificación de registros   comando sed

MODIFICACIÓN

Usos de sedsed “s/usuario/nuevo/” /etc/passwd

De este modo yo modifico la primera ocurrencia de usuario, solamente la primera

Page 23: Modificación de registros   comando sed

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

Page 24: Modificación de registros   comando sed

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 ‘ ’

Page 25: Modificación de registros   comando sed

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)?

Page 26: Modificación de registros   comando sed

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)

Page 27: Modificación de registros   comando sed

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)