Si hablamos de los principales espacios en blanco, son relativamente fáciles de detectar como están al comienzo del texto. Sin embargo, no es fácil detectar los espacios en blanco. Lo mismo es el caso con espacios dobles que a veces también son difíciles de detectar. Todo se vuelve más desafiante cuando necesitas eliminar todos los espacios en blanco y posterior de un documento que contiene miles de líneas.
Para eliminar los espacios en blanco de su documento, puede usar varias herramientas como AWK, SED, CUT y TR. En algunos otros artículos, hemos discutido el uso de AWK para eliminar los espacios en blanco. En este artículo, discutiremos el uso de SED para eliminar los espacios en blanco de los datos.
Aprenderá a usar SED para:
Ejecutaremos los comandos en Ubuntu 20.04 fosa focal. También puede ejecutar los mismos comandos en otras distribuciones de Linux. Usaremos la aplicación de terminal Ubuntu predeterminado para ejecutar los comandos. Para abrir el terminal, use el atajo de teclado Ctrl+Alt+T.
Que es sed
SED (representa el editor de transmisión) es una utilidad muy potente y útil en Linux que nos permite realizar manipulaciones de texto básicas en las transmisiones de entrada. No es un editor de texto, pero ayuda a manipular y filtrar el texto. Recibe las transmisiones de entrada y las edita de acuerdo con las instrucciones del usuario y luego imprime el texto transformado en la pantalla.
Con sed, puedes:
Uso de SED para eliminar los espacios en blanco
Usaremos la siguiente sintaxis para eliminar los espacios en blanco del texto:
s /regexp /reemplazo /banderas
Dónde
Expresiones regulares
Algunas de las expresiones regulares que usaremos aquí son:
Para fines de demostración, utilizaremos el siguiente archivo de muestra llamado "TestFile".
Ver todos los espacios en blanco en un archivo
Para encontrar todos los espacios en blanco en su archivo, canse la salida del comando CAT al comando TR como este:
$ Cat TestFile | tr "" "*" | tr "\ t" "&"
Este comando reemplaza todos los espacios en blanco en su archivo por (*) símbolo, lo que hace que sea más fácil detectar todos los espacios en blanco si son espacios en blanco, múltiples, múltiples, liderantes o finos.
En la siguiente captura de pantalla, puede ver que los espacios en blanco son reemplazados por * símbolo.
Elimine todos los espacios en blanco (incluidos los espacios y las pestañas)
En algunos casos, debe eliminar todos los espacios en blanco de los datos, yo.mi. liderando, desastre y los espacios en blanco entre los textos. El siguiente comando eliminará todos los espacios en blanco del "archivo de prueba".
$ Cat TestFile | sed -r 's/\ s+// g'
Nota: SED no altera sus archivos a menos que guarde la salida en el archivo.
Producción:
Después de ejecutar el comando anterior, apareció la siguiente salida, que muestra que todos los espacios en blanco se han eliminado del texto.
También puede usar el siguiente comando para verificar que todos los espacios en blanco se hayan eliminado.
$ Cat TestFile | sed -r 's/\ s+// g' | tr "" "*" | tr "\ t" "&"
Desde la salida, puede ver que no es un símbolo (*), lo que significa que se han eliminado todos los espacios en blanco.
Para eliminar todos los espacios en blanco pero solo de una línea específica (digamos que la línea número 2), puede usar el siguiente comando:
$ Cat TestFile | sed -r '2s/\ s+// g'
Eliminar todos los espacios en blanco (incluidos espacios y pestañas)
Para eliminar todos los espacios en blanco del comienzo de cada línea (espacios en blanco líder), use el siguiente comando:
$ Cat TestFile | sed 's/^[\ t]*//'
Producción:
La siguiente salida apareció después de ejecutar el comando anterior, que muestra que todos los espacios principales se han eliminado del texto.
También puede usar el siguiente comando para verificar que se hayan eliminado todos los espacios principales:
$ Cat TestFile | sed 's/^[\ t]*//' | tr "" "*" | tr "\ t" "&"
Desde la salida, puede ver que no hay (*) símbolo al comienzo de las líneas que verifica que se eliminen todos los espacios principales.
Para eliminar los espacios en blanco de solo una línea específica (digamos que la línea número 2), puede usar el siguiente comando:
$ Cat TestFile | sed '2s/^[\ t]*//'
Eliminar todos los espacios en blanco (incluidos espacios y pestañas)
Para eliminar todos los espacios en blanco del extremo de cada línea (espacios en blanco continuo), use el siguiente comando:
$ Cat TestFile | sed 's/[\ t]*$ //'
Producción:
La siguiente salida apareció después de ejecutar el comando anterior, que muestra que todos los espacios en blanco se han eliminado del texto.
También puede usar el siguiente comando para verificar que se hayan eliminado todos los espacios en blanco.
$ Cat TestFile | sed 's/[\ t]*$ //' | tr "" "*" | tr "\ t" "&"
Desde la salida, puede ver que no hay (*) símbolo al final de las líneas que verifica que se eliminen todos los espacios en blanco.
Para eliminar los espacios en blanco de solo una línea específica (digamos la línea número 2), puede usar el siguiente comando:
$ Cat TestFile | sed '2s/[\ t]*$ //'
Eliminar los espacios en blanco y posteriores
Para eliminar todos los espacios en blanco tanto del inicio como del final de cada línea (i.mi. Tanto los espacios principales y finales), use el siguiente comando:
$ Cat TestFile | sed 's/^[\ t]*//; s/[\ t]*$ //'
Producción:
La siguiente salida apareció después de ejecutar el comando anterior, que muestra que tanto los espacios en blanco como los siguientes se han eliminado del texto.
También puede usar el siguiente comando para verificar que se hayan eliminado los espacios en blanco y posterior.
$ Cat TestFile | sed 's/^[\ t]*//; s/[\ t]*$ //' | tr "" "*" | tr "\ t" "&"
Desde la salida, puede ver que no hay (*) símbolo al comienzo o al final de las líneas que verifica que se eliminen todos los espacios principales y finales.
Para eliminar tanto los espacios en blanco y posterior desde solo una línea específica (digamos la línea número 2), puede usar el siguiente comando:
$ Cat TestFile | sed '2s/^[\ t]*//; 2s/[\ t]*$ //'
Reemplace múltiples espacios en blanco con un solo espacio en blanco
En algunos casos, hay múltiples espacios en blanco en el mismo lugar en el archivo, pero solo necesita un solo espacio en blanco. Puede hacerlo reemplazando esos múltiples espacios por un solo espacio usando SED.
El siguiente comando reemplazará todos los múltiples espacios en blanco con un solo espacio en blanco desde cada línea en el "archivo de prueba".
$ Cat TestFile | sed 's/[] \+//g'
Producción:
La siguiente salida apareció después de ejecutar el comando anterior, que muestra que los múltiples espacios en blanco han sido reemplazados por el solo espacio en blanco.
También puede usar el siguiente comando para verificar si se reemplazan múltiples espacios en blanco con un solo espacio en blanco:
$ Cat TestFile | sed 's/[] \+//g' | tr "" "*" | tr "\ t" "&"
Desde la salida, puede ver el símbolo único (*) en cada lugar que verifica que todas las ocurrencias de los espacios en blanco se reemplazan con un solo espacio en blanco.
Entonces, se trataba de eliminar los espacios en blanco de sus datos utilizando SED. En este artículo, ha aprendido cómo usar SED para eliminar todos los espacios en blanco de sus datos, eliminar solo el espacio en blanco líder o posterior, y eliminar el espacio en blanco líder y continuo. También ha aprendido a reemplazar los espacios múltiples con un solo espacio. Ahora será fácil para usted eliminar los espacios en blanco de un archivo que contiene cientos o miles de líneas.