**El espacio de patrón y de retención, muy difícil de comprender sin explicarlo muy bien** sed@command:~$ cat lineas.txt \\ una \\ dos \\ tres \\ cuatro \\ cinco \\ seis \\ siete \\ ocho \\ nueve \\ diez \\ sed@command:~$ sed@command:~$ cat lineas2.txt (tiene un espacio al final de la última línea) \\ una \\ dos \\ tres \\ cuatro \\ cinco \\ seis \\ siete \\ ocho \\ nueve \\ diez \\ 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:~$ \\ 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 \\ dos \\ tres \\ cuatro \\ cinco \\ seis \\ siete \\ ocho \\ nueve \\ diez \\ sed@command:~$ \\ 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 \\ **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 \\ sed@command:~$ sed '/cuatro/bz;s/u/mu/;:z;s/u/chu/' lineas.txt \\ mchuna \\ dos \\ tres \\ cchuatro \\ cinco \\ seis \\ siete \\ ocho \\ nmchueve \\ diez \\ sed@command:~$ \\ **Condicionales fáciles** \\ -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) \\ tres \\ seis \\ ocho \\ diez \\ sed@command:~$ sed -nE '/^.{4}$/{n;p}' lineas.txt (n salta a la siguiente línea y p imprime) \\ cuatro \\ siete \\ nueve \\ once once \\ sed@command:~$ sed -nE '/^.{4}$/{n;n;p}' lineas.txt (salta 2 líneas e imprime) \\ cinco \\ ocho \\ sed@command:~$