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

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:
-Aimprime “$” al final de cada línea y muestra caracteres no imprimibles utilizando notación de caret.-nnumera todas las líneas.-bnumera las líneas que no están en blanco.-sreduce 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
2. sort
Como su nombre sugiere, sort organiza el contenido de los archivos alfabéticamente y numéricamente.

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

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.

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 -5o-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.

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.

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.

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
Si romper palabras no es deseado, se puede utilizar la opción -s para romper en espacios.
fold -w30 -s longline.txt
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 filenamePara modificar el archivo original en su lugar, puedes usar la bandera -i.

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

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
División por bytes
split -b bytes input_file output_prefix
División a un número específico de archivos
split -n num_files input_file output_prefix12. tac
Tac, que es cat al revés, hace exactamente eso: muestra archivos con las líneas en orden inverso.

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 SET2Por ejemplo, para reemplazar caracteres en minúscula por su equivalente en mayúscula, puedes usar lo siguiente:
tr "a-z" "A-Z"
Para eliminar un conjunto de caracteres, utiliza la bandera -d.
tr -d SETPara eliminar el complemento de un conjunto de caracteres (es decir, todo lo que no forme parte del conjunto), utiliza -dc.
tr -dc SETConclusió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.