9.2.- Tratamiento de datos

El comando wc (word count) cuenta el número de líneas, de palabras y de caracteres.

Analizaremos el script “frutas” con algunos de estos ejemplos.

Se mostrará el número de líneas, palabras y caracteres respectivamente del archivo frutas.

Mostramos solamente el número de líneas:

Número de caracteres contenidos en un nombre de archivo introducido mediante el teclado (observemos atentamente el salto de línea añadido por el comando echo):

Vemos a continuación la codificación de un archivo (los caracteres acentuadas y la letra ñ se codifican con 2 bytes).

Este archivo contiene caracteres  acentuados y la ñ:

El comando od nos muestra los caracteres acentuados y las ñ, se codifican con 2 bytes:

Veamos el número de bytes del archivo:

Número de caracteres del archivo:

Obtener la lista de valores de localización (valor ligado al país y al idioma) disponibles en el sistema:

El comando cut sirve para recuperar (cortar) caracteres o campos de una línea.

La opción -d permite definir el carácter separados de campos. El carácter separador es por defecto la tabulación.

Cortar las 2 primeras cifras de un código postal:

Mostrar el primer, el tercer y el sexto campo de las 3 últimas líneas del archivo /etc/passwd:

Si el carácter separador “|” es un carácter especial del shell, hay que protegerlo:

El comando sort permite ordenar las líneas de un flujo de datos tipo texto.

Vemos a continuación un archivo basado en /etc/passwd, que hemos llamado passwd.txt y lo ordenaremos con el comando sort.

Ordenación del archivo sin especificar ninguna opción:

Por defecto, el criterio de ordenación se considera como una cadena alfanumérica. La opción -k permite especificar las columnas que forman parte de la composición del criterio de búsqueda. El criterio de ordenación (índice del campo de inicio y final incluidos).

Ordenación basándose en el tercer campo (UID) y uso de cut para aislar el criterio de búsqueda. El criterio de ordenación se trata como una cadena de caracteres:

Para que el criterio de ordenación sea tratado de manera numérica, hay que incluir la opción -n:

Criterio de ordenación alfanumérico en el campo 2. Sin la opción -b, la ordenación se realiza de forma incorrecta:

Con la opción -b:

Uso de dos criterios de ordenación: valor alfanumérico y valor numérico:

El comando paste concatena las líneas de los archivos pasados como argumento: las líneas de índice “n” de cada archivo se concatenan. Con la opción -s, cada archivo se trata de forma independiente y se obtendrán todas sus líneas concatenadas en una sola. Los elementos concatenados están separados por una tabulación:

Muestra dos archivos de notas de alumnos. Los alumnos siempre se citan en el mismo orden:

Colocar las notas en la misma línea:

Eliminar la tercera columna:

Con la opción -s, concatenar todas las líneas en una sola:

Uso de la opción -s con dos archivos pasados como argumento:

El comando split permite dividir un archivo en fragmentos, cada fragmento se almacena en archivos llamados PREFIJOaa, PREFIJOab, … PREFIJO tiene como valor por defecto “x”. Si ningún nombre de archivo se pasa como argumento, su usará la entrada estandar (entrada desde el teclado).

Hagamos un archivo de 9 líneas que llamaremos lineas.txt para los ejemplos siguientes:

Vamos a dividir el archivo en 3 líneas cada uno. Por defecto los archivos de salida se llaman xaa, xab, xac:

Observamos el contenido de los tres archivos creados por split:

Podemos cambiar el prefijo x de los nombres de archivo de salida por el prefijo que más nos convenga:

El comando tr (translate) permite la aplicación de un tratamiento a ciertos caracteres de un flujo de datos: eliminación, substituciones. Este comando explota únicamente los datos que recibe por la entrada estándar (teclado).

Para la sustitución de caracteres se deben especificar dos conjuntos de caracteres. cada conjunto contendrá el mismo número de caracteres. Todo carácter de conjunto1 que se encuentre en el flujo de datos se substituirá por el carácter de la misma posición de conjunto2.

Vamos a procesar la cadena “abcd” para que substituya el carácter “b” por el “8” y el carácter “d” por el “9“.

Podemos convertir las minúsculas en mayúsculas usando los corchetes. en este caso cada minúscula se transformara en su mayúscula correspondiente:

Si queremos procesar un archivo debemos utilizar la redirección:

  • ¿Podrías hacer con el ejemplo de arriba volver a convertirlo en minúsculas?

Con la opcion -d podemos eliminar caracteres del flujo de datos. Este ejemplo muestra la transformación de un archivo DOS (final de línea “|r|n) al formato UNIX (“|n“), eliminando el carácter “|r

El comando uniq permite eliminar las líneas repetidas de un archivo. Solamente las líneas idénticas consecutivas son procesadas. el resultado se almacena en un archivo de salida, si especificamos dicho archivo, o por la salida estándar (pantalla) en caso contrario.

En el archivo creado anteriormente “lineas.txt” añadimos algunas palabras repetidas:

Ordenamos el archivo para que las líneas idénticas se coloquen consecutivamente:

Eliminación de las líneas repetidas:

Muestra delante de cada línea su número de apariciones en el archivo:

Mostrar solo las líneas que tienen duplicados:

  • Crea tus propios archivos y ejemplos de uso de los comandos que hemos aprendido.