1.6.4.- Comandos de transformación de ficheros.

Muchos de los comandos de manipulación de texto de Linux están pensados para transformar el contenido de los ficheros. estos comandos no cambian realmente el contenido de los ficheros, sino que envían el fichero modificado a la salida estándar. después puede canalizar esta salida hacia otro comando o redirigirla a un nuevo fichero.

NOTA.- Uno de los comandos más importantes para la transformación de ficheros es sed. Este comando es muy complejo y más adelante lo comentaremos.

CONVERTIR TABULACIONES EN ESPACIOS CON EXPAND

A veces, los ficheros de texto contienen tabulaciones, pero los programas que tienen que procesar no se llevan bien con éstas; o, quizás, desee editar un fichero de texto en un editor para la tabulación un espacio horizontal distinto del que emplea el editor en el que se creó el fichero. de eso se ocupa el comando expand.

Por defecto, expand supone que hay una tabulación cada ocho caracteres. Se puede cambiar este espaciado con las opciones -t num o --tab=num, donde num es el valor del espaciado.

MOSTRAR FICHEROS EN OCTAL CON OD

Algunos ficheros no son fáciles de mostrar en ASCII; la mayoría de los ficheros gráficos, de audio, etc., emplean carácteres que no son ASCII y podrían parecer galimatias. O pueden mostrar resultados extraños al intentar visualizarlos con cat o una herramienta similar. En tales casos, od (cuyo nombre viene de (octal dump) puede ser ayuda, pues muestra los ficheros en un formato sin ambigüedades, empleando por defecto números octales (en base 8). Por ejemplo:

ejemplo_od1

El primer campo de cada línea es un índice del fichero en octal. Por ejemplo, la segunda línea comienza en 20 en octal (16 en base 10) del fichero. Los números restantes de cada línea representan los bytes del fichero.

Aunque en teoría od es una herramienta para generar salida octal, puede generar muchos otros formatos de salida, como hexadecimal (base 16), decimal (base 10) e incluso ASCII.

ORDENAR FICHEROS CON SORT

En ocasiones, deseará generar un fichero de salida que esté ordenado. Para ello, puede utilizar un comando que recibe el nombre de sort (ordenar). este comando puede ordenar de varias maneras, entre las que se incluyen:

  • Ignorar mayúsculas y minúsculas.- Normalmente sort ordena por el valor ASCII, el cual distingue entre las letras mayúsculas y minúsculas. Las opciones -f o --ignore-case hacen que sort no tenga este factor en cuenta.
  • Ordenar por meses.- Las opciones -M o --month-sort hacen que el programa ordene por las abreviaturas de tres letras de los meses (que van de JAN aDEC).
  • Ordenación numérica.- Puede ordenar por números empleando las opciones -n o --numeric-sort.
  • Invertir el orden.- Las opciones -r o --reverse ordena a la inversa.
  • Campo de ordenación.- Por defecto, sort utiliza el primer campo como campo para la ordenación. Puede especificar otro campo con las opciones -k campo o --key=campo(campo puede estar compuesto por dos campos numerados separados por comas, para ordenar por varios campos).

El comando sort admite un gran número de opciones adicionales, muchas de ellas bastante exóticas. Encontrará muchos más detalles en la página man de sort.

DIVIDIR PARTES DE UN FICHERO CON SPLIT

El comando split puede dividir un fichero en dos o más ficheros. A diferencia de la mayoría de los comandos de manipulación de texto, este comando requiere que introduzca el nombre del fichero de salida, que se añadirá a éste como un código alfabético. Normalmente también debe especificar el tamaño que desea que tenga los ficheros individuales:

  • Dividir por bytes.- Las opciones -b tamaño o --bytes=tamaño dividen el fichero de entrada en partes de tamaño indicado. Esta opción puede tener la desagradable consecuencia de cortar el fichero por la mitad de una línea.
  • Dividir por bytes en bloques determinados por las.- Puede dividir un fichero en ficheros de un tamaño no superior al especificado sin romper sus líneas empleando las opciones -C=tamaño o --line-bytes=tamaño (las líneas se seguirán dividiendo en ficheros si la longitud de éstas es superior al tamaño indicado).
  • Dividir por número de líneas.- Las opciones -l líneas o bien --lines=líneas dividen el fichero en bloques de un tamaño no superior al número de líneas especificado.

TRADUCIR CARACTERES CON TR

El comando tr cambia caracteres individuales de la entrada estándar. su sintaxis es la siguiente:

tr [opciones] SET1 [SET2]

Especificamos los caracteres que queremos reemplazar en un grupo (SET1) y los caracteres con los que se quieren reemplazar en un segundo grupo (SET2). Cada carácter de SET1 será reemplazado por el de su posición equivalente en SET2.

CONVERTIR ESPACIOS EN TABULACIONES CON UNEXPAND

El comando unexpand es, lógicamente el opuesto a expand, pues convierte varios espacios en tabulaciones. Nos sirve para comprimir el tamaño de ficheros que contengan muchos espacios y puede ser útil en los casos en que un fichero vaya a ser procesado por una utilidad que espera tabulaciones en diferentes puntos.

Como unexpand, expand acepta las opciones -t num o --tabs=num, que definen el espaciado de la tabulación a num caracteres. Si omite esta opción, unexpand supone que las tabulaciones son cada ocho caracteres.

BORRAR LÍNEAS DUPLICADAS CON UNIQ

El comando uniq elimina las líneas duplicadas. Probablemente, lo utilice cuando haya ordenado un fichero y no desee tener elementos duplicados en éste. Por ejemplo, supongamos que desea resumir la frase «cuando llega el frío invierno estamos hartos de pasar frío«. podría crear un fichero con muchas frases, una frase por línea. Luego podemos ordenar este fichero utilizando sort y pasarlo por uniq. Si escribimos un archivo de texto y ponemos una palabra por línea, el resultado sería:

ejemplo_uniq1

Observamos que la palabra «frío«, que aparecía dos veces, solo aparece una vez en la versión procesada con uniq.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.