Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa | |||
|
comandos:sed [2025/01/14 12:17] admin ↷ El nombre de la página cambió de comandos:comando_sed a comandos:sed |
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:~$ | ||