Trece herramientas útiles para trabajar con texto en la línea de comandos

Herramienta de texto en la línea de comandos de Linux Destacada

Las distribuciones de GNU/Linux incluyen una gran cantidad de programas para manejar texto, la mayoría de los cuales son proporcionados por las utilidades básicas de GNU. Hay una curva de aprendizaje, pero estas utilidades pueden resultar muy útiles y eficientes cuando se utilizan correctamente.

Aquí hay trece potentes herramientas de manipulación de texto que todo usuario de línea de comandos debería conocer.

1. cat

Cat fue diseñado para concatenar archivos, pero a menudo se usa para mostrar un solo archivo. Sin ningún argumento, cat lee la entrada estándar hasta que se presiona Ctrl + D (desde el terminal o desde otro programa de salida si se usa una tubería). La entrada estándar también se puede especificar explícitamente con un -.

Cat tiene una serie de opciones útiles, notablemente:

  • -A imprime “$” al final de cada línea y muestra caracteres no imprimibles utilizando notación de caret.
  • -n numera todas las líneas.
  • -b numera las líneas que no están en blanco.
  • -s reduce una serie de líneas en blanco a una sola línea en blanco.

En el siguiente ejemplo, estamos concatenando y numerando el contenido de file1, entrada estándar y file3.

cat -n file1 - file3

Herramientas de texto de Linux Cat

2. sort

Como su nombre sugiere, sort organiza el contenido de los archivos alfabéticamente y numéricamente.

Herramientas de texto de Linux Sort

3. uniq

Uniq toma un archivo ordenado y elimina líneas duplicadas. A menudo se encadena con sort en un solo comando.

Herramientas de texto de Linux Uniq

4. comm

Comm se utiliza para comparar dos archivos ordenados, línea por línea. Produce tres columnas: las dos primeras contienen líneas únicas del primer y del segundo archivo, respectivamente, y la tercera muestra aquellas que se encuentran en ambos archivos.

Herramientas de texto de Linux Comm

5. cut

Cut se utiliza para recuperar secciones específicas de líneas, basándose en caracteres, campos o bytes. Puede leer de un archivo o de la entrada estándar si no se especifica un archivo.

Corte por posición de carácter

La opción -c especifica una única posición de carácter o uno o más rangos de caracteres.

Por ejemplo:

  • -c 3: el 3er carácter.
  • -c 3-5: desde el 3er hasta el 5to carácter.
  • -c -5 o -c 1-5: desde el 1ro hasta el 5to carácter.
  • -c 5-: desde el 5to carácter hasta el final de la línea.
  • -c 3,5-7: el 3er y desde el 5to hasta el 7mo carácter.

Herramientas de texto de Linux Cut Char

Corte por campo

Los campos se separan por un delimitador que consiste en un único carácter, que se especifica con la opción -d. La opción -f selecciona una posición de campo o uno o más rangos de campos utilizando el mismo formato que arriba.

Herramientas de texto de Linux Cut Field

6. dos2unix

GNU/Linux y Unix suelen terminar las líneas de texto con un salto de línea (LF), mientras que Windows utiliza retorno de carro y salto de línea (CRLF). Pueden surgir problemas de compatibilidad al manejar texto CRLF en Linux, y aquí es donde entra dos2unix. Convierte los terminadores CRLF a LF.

En el siguiente ejemplo, se utiliza el comando file para verificar el formato de texto antes y después de usar dos2unix.

Herramientas de texto de Linux Dos2unix

7. fold

Para hacer que las líneas largas de texto sean más fáciles de leer y manejar, se puede usar fold, que envuelve líneas a un ancho específico.

Fold coincide estrictamente con el ancho especificado por defecto, rompiendo palabras donde sea necesario.

fold -w30 longline.txt

Herramientas de texto de Linux Fold

Si romper palabras no es deseado, se puede utilizar la opción -s para romper en espacios.

fold -w30 -s longline.txt

Herramientas de texto de Linux Fold Spaces

8. iconv

Esta herramienta convierte texto de una codificación a otra, lo cual es muy útil al tratar con codificaciones inusuales.

iconv -f input_encoding -t output_encoding -o output_file input_file
  • “input_encoding” es la codificación de la que se está convirtiendo.
  • “output_encoding” es la codificación a la que se está convirtiendo.
  • “output_file” es el nombre del archivo al que iconv guardará.
  • “input_file” es el nombre del archivo del que iconv leerá.

Nota: puedes listar las codificaciones disponibles con iconv -l.

9. sed

sed es un editor de flujo poderoso y flexible, utilizado comúnmente para encontrar y reemplazar cadenas con la siguiente sintaxis.

El siguiente comando leerá del archivo especificado (o de la entrada estándar), reemplazando las partes del texto que coincidan con el patrón de expresión regular con la cadena de reemplazo y mostrando el resultado en el terminal.

sed s/pattern/replacement/g filename

Para modificar el archivo original en su lugar, puedes usar la bandera -i.

Herramientas de texto de Linux Sed

10. wc

La utilidad wc imprime el número de bytes, caracteres, palabras o líneas en un archivo.

Herramientas de texto de Linux Wc

11. split

Puedes usar split para dividir un archivo en archivos más pequeños, por número de líneas, por tamaño o a un número específico de archivos.

División por número de líneas

split -l num_lines input_file output_prefix

Herramientas de texto de Linux Split Lines

División por bytes

split -b bytes input_file output_prefix

Herramientas de texto de Linux Split Bytes

División a un número específico de archivos

split -n num_files input_file output_prefix

12. tac

Tac, que es cat al revés, hace exactamente eso: muestra archivos con las líneas en orden inverso.

Herramientas de texto de Linux Tac

13. tr

La herramienta tr se utiliza para traducir o eliminar conjuntos de caracteres.

Un conjunto de caracteres es generalmente un string o rangos de caracteres. Por ejemplo:

  • “A-Z”: todas las letras mayúsculas
  • “a-z0-9”: letras minúsculas y dígitos
  • “\n[:punct:]”: caracteres de nueva línea y puntuación

Consulta la página del manual de tr para más detalles.

Para traducir un conjunto a otro, usa la siguiente sintaxis:

tr SET1 SET2

Por ejemplo, para reemplazar caracteres en minúscula por su equivalente en mayúscula, puedes usar lo siguiente:

tr "a-z" "A-Z"

Herramientas de texto de Linux Tr

Para eliminar un conjunto de caracteres, utiliza la bandera -d.

tr -d SET

Para eliminar el complemento de un conjunto de caracteres (es decir, todo lo que no forme parte del conjunto), utiliza -dc.

tr -dc SET

Conclusión

Hay mucho que aprender cuando se trata de la línea de comandos de Linux. Esperamos que los comandos anteriores te ayuden a manejar mejor el texto en la línea de comandos.