Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
comandos:sed [2025/01/07 01:42] truper creado |
comandos:sed [2025/01/14 16:33] (actual) truper |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | El espacio de patrón y de retención, muy difícil de comprender sin explicarlo muy bien | + | **El espacio de patrón y de retención, muy difícil de comprender sin explicarlo muy bien** |
- | sed@command:~$ cat lineas.txt | + | sed@command:~$ cat lineas.txt \\ |
- | una | + | una \\ |
- | dos | + | dos \\ |
- | tres | + | tres \\ |
- | cuatro | + | cuatro \\ |
- | cinco | + | cinco \\ |
- | seis | + | seis \\ |
- | siete | + | siete \\ |
- | ocho | + | ocho \\ |
- | nueve | + | nueve \\ |
- | diez | + | diez \\ |
sed@command:~$ | sed@command:~$ | ||
- | sed@command:~$ cat lineas2.txt (tiene un espacio al final de la última línea) | + | sed@command:~$ cat lineas2.txt (tiene un espacio al final de la última línea) \\ |
- | una | + | una \\ |
- | dos | + | dos \\ |
- | tres | + | tres \\ |
- | cuatro | + | cuatro \\ |
- | cinco | + | cinco \\ |
- | seis | + | seis \\ |
- | siete | + | siete \\ |
- | ocho | + | ocho \\ |
- | nueve | + | nueve \\ |
- | diez | + | diez \\ |
- | sed@command:~$ | + | sed@command:~$ \\ |
- | sed@command:~$ cat lineas.txt | sed '/./{H;d};x;' (como la condición /./ siempre se cumple nunca llega a ejecutar x y por eso no imprime nada | + | sed@command:~$ cat lineas.txt | sed '/./{H;d};x;' (como la condición /./ siempre se cumple nunca llega a ejecutar x y por eso no imprime nada \\ |
- | sed@command:~$ | + | sed@command:~$ \\ |
- | sed@command:~$ cat lineas2.txt | sed '/./{H;d};x;' (como el archivo al final contiene una línea en blanco /./ deja de cumplirse, pasa a la instrucción x y por eso imprime | + | sed@command:~$ cat lineas2.txt | sed '/./{H;d};x;' (como el archivo al final contiene una línea en blanco /./ deja de cumplirse, pasa a la instrucción x y por eso imprime) \\ |
- | una | + | una \\ |
- | dos | + | dos \\ |
- | tres | + | tres \\ |
- | cuatro | + | cuatro \\ |
- | cinco | + | cinco \\ |
- | seis | + | seis \\ |
- | siete | + | siete \\ |
- | ocho | + | ocho \\ |
- | nueve | + | nueve \\ |
- | diez | + | diez \\ |
- | sed@command:~$ | + | sed@command:~$ \\ |
- | El comando podría leerse algo así, if /./ { do{H;d}while(no linea en blanco);x } | + | El comando podría leerse algo así, if /./ { do{H;d}while(no linea en blanco);x } \\ |
- | Mientras la línea contiene algo ejecuta {H;d} (añade la línea del espacio de patron al de retención y la borra del espacio de patrón), y cuando no (la línea ultima en blanco) ejecuta x (intercambia las líneas almacenadas en el espacio de retención a patrón) y por eso las imprime todas | + | Mientras la línea contiene algo ejecuta {H;d} (añade la línea del espacio de patron al de retención y la borra del espacio de patrón), y cuando no (la línea ultima en blanco) ejecuta x (intercambia las líneas almacenadas en el espacio de retención a patrón) y por eso las imprime todas \\ |
- | **Etiquetas condicionales** | + | **Etiquetas condicionales** \\ |
- | si la línea coincide con el patron cuatro salta a la etiqueta z y sólo sustituye u por chu, sino sustituye u por mu y luego u por chu | + | si la línea coincide con el patron cuatro salta a la etiqueta z y sólo sustituye u por chu, sino sustituye u por mu y luego u por chu \\ |
- | sed@command:~$ sed '/cuatro/bz;s/u/mu/;:z;s/u/chu/' lineas.txt | + | sed@command:~$ sed '/cuatro/bz;s/u/mu/;:z;s/u/chu/' lineas.txt \\ |
- | mchuna | + | mchuna \\ |
- | dos | + | dos \\ |
- | tres | + | tres \\ |
- | cchuatro | + | cchuatro \\ |
- | cinco | + | cinco \\ |
- | seis | + | seis \\ |
- | siete | + | siete \\ |
- | ocho | + | ocho \\ |
- | nmchueve | + | nmchueve \\ |
- | diez | + | diez \\ |
- | sed@command:~$ | + | sed@command:~$ \\ |
- | **Condicionales fáciles** | + | **Condicionales fáciles** \\ |
- | -nE (imprime sólo lo que coincide y habilita el uso de expresiones regulares sin tener que escapar los caracteres con \) | + | -nE (imprime sólo lo que coincide y habilita el uso de expresiones regulares sin tener que escapar los caracteres con \) \\ |
- | sed@command:~$ sed -nE '/^.{4}$/p' lineas.txt (líneas que sólo tengan 4 caracteres) | + | sed@command:~$ sed -nE '/^.{4}$/p' lineas.txt (líneas que sólo tengan 4 caracteres) \\ |
- | tres | + | tres \\ |
- | seis | + | seis \\ |
- | ocho | + | ocho \\ |
- | diez | + | diez \\ |
- | sed@command:~$ sed -nE '/^.{4}$/{n;p}' lineas.txt (n salta a la siguiente línea y p imprime) | + | sed@command:~$ sed -nE '/^.{4}$/{n;p}' lineas.txt (n salta a la siguiente línea y p imprime) \\ |
- | cuatro | + | cuatro \\ |
- | siete | + | siete \\ |
- | nueve | + | nueve \\ |
- | once once | + | once once \\ |
- | sed@command:~$ sed -nE '/^.{4}$/{n;n;p}' lineas.txt (salta 2 líneas e imprime) | + | sed@command:~$ sed -nE '/^.{4}$/{n;n;p}' lineas.txt (salta 2 líneas e imprime) \\ |
- | cinco | + | cinco \\ |
- | ocho | + | ocho \\ |
sed@command:~$ | sed@command:~$ |