Diferencia entre revisiones de «Ejercicios de sed»
Sin resumen de edición |
|||
Línea 1: | Línea 1: | ||
== Ejercicios de sustitución == | == Ejercicios de sustitución == | ||
Estos ejercicios complementan al artículo principal de [[sed]] | |||
=== Enunciados === | === Enunciados === | ||
1- Modifica la IP de un ordenador por la dirección de la red. (por ejemplo de 192.168.3.5 a 192.168.3.0) | 1- Modifica la IP de un ordenador por la dirección de la red. (por ejemplo de 192.168.3.5 a 192.168.3.0) |
Revisión del 11:55 18 abr 2012
Ejercicios de sustitución
Estos ejercicios complementan al artículo principal de sed
Enunciados
1- Modifica la IP de un ordenador por la dirección de la red. (por ejemplo de 192.168.3.5 a 192.168.3.0)
2- Cambia del PATH, el /usr/bin por /home/lliurex/bin
3- Pon una palabra determinada entre comillas
4- Pon una coma entre la primera palabra y las demás de una línea:
5- Convierte 123456789abc en una dirección MAC
6- De todas las líneas de /etc/passwd, muestra el directorio home y luego el nombre
Soluciones
1- Modifica la IP de un ordenador por la dirección de la red. (por ejemplo de 192.168.3.5 a 192.168.3.0)
$ echo 192.168.0.5 | sed 's/.[0-9]\+$/.0/'
2- Cambia del PATH, el /usr/bin por /home/lliurex/bin
$ echo $PATH | sed 's_/usr/bin_/home/lliurex/bin_'
3- Pon una palabra determinada entre comillas
$ echo 'El so Windows' | sed 's/so/"&"/'
4- Pon una coma entre la primera palabra y las demás de una línea:
$ echo pienso luego existo | sed 's/[a-z]\+/&,/'
5- Convierte 123456789abc en una dirección MAC
$ echo 123456789abc | sed -e 's/../&:/g' -e 's/:$//'
6- De todas las líneas de /etc/passwd, muestra el directorio home y luego el nombre
$ cat /etc/passwd | sed 's/^\([A-Za-z0-9]\+\):[^:]*:[^:]*:[^:]*:[^:]*:\(.*\):.*/\2 \1/g' $ cat /etc/passwd | cut -d":" -f1,6 | sed 's/\(.*\):\(.*\)/\2 \1/'
Ejercicios de limitar sed a ciertas líneas
Enunciados
1- Elimina el head de un html
2- Quita las últimas 5 líneas a un documento
Soluciones
1- Elimina el head de un html
cat index.html | sed -e 's/<head>/\n<head>\n/g' -e 's_</head>_\n</head>\n_g' | sed '/<head>/,/<\/head>/ d' Primero añade un salto de línea a cada head para evitar eliminar otras etiquetas, luego borra entre dos expresiones regulares
2- Quita las últimas 5 líneas a un documento
lineas=$(cat index.html | wc -l) cat -n index.html | sed "$(($lineas-5)),$ d"
Ejercicios Varios
Enunciados
1. Haz un nuevo fichero llamado 1.sed que tenga sólo las líneas 1,2,3,4,5 del fichero de entrada.
2. Haz un nuevo fichero llamado 2.sed que tenga solo las líneas 9,12,14 del fichero de entrada.
3. Muestra las líneas que contengan la palabra "linea" del fichero original.
4. Muestra las líneas que contienen caracteres numéricos.
5. Muestra las líneas que contienen todas las líneas del fichero original, pero se debe sustituir las palabra "linea" por "entrada", asegurate que también se cambia Linea por Entrada.
6. Muestra las líneas que no contienen caracteres numéricos.
7. Muestra el fichero de entrada que reemplace cualquier carácter numérico con una línea de tres X.
8. Muestra el fichero de manera que añada una nueva línea detrás de cada línea que tenga caracteres numéricos.
9.
Soluciones
1. Haz un nuevo fichero llamado 1.sed que tenga sólo las líneas 1,2,3,4,5 del fichero de entrada.
sed -n '1,5 p' > 1.sed
2. Haz un nuevo fichero llamado 2.sed que tenga solo las líneas 9,12,14 del fichero de entrada.
sed -n -e '9 p' -e '12 p' -e '14 p' > 2.sed
3. Muestra las líneas que contengan la palabra "linea" del fichero original.
sed -n '/linea/ p'
4. Muestra las líneas que contienen caracteres numéricos.
sed -n '/[0-9]/ p'
5. Muestra las líneas que contienen todas las líneas del fichero original, pero se debe sustituir las palabra "linea" por "entrada", asegurate que también se cambia Linea por Entrada.
sed 's/linea/entrada/g s/Linea/Entrada/g'
6. Muestra las líneas que no contienen caracteres numéricos.
sed -n '/[0-9]/! p'
7. Muestra el fichero de entrada que reemplace cualquier carácter numérico con una línea de tres X.
sed 's/[0-9]/XXX/g'
8. Muestra el fichero de manera que añada una nueva línea detrás de cada línea que tenga caracteres numéricos.
sed '/[0-9]/ a\ '