miércoles, noviembre 13, 2013

Filtros en Linux II.


Filtros de aire de automóvil Fuente: http://commons.wikimedia.org
Intro.
Seguimos hablando de filtros en Linux.  Conoceremos en esta entrada algunos comandos con los que manipular ficheros dividiendolos, reemplazando caracteres, eliminando duplicados e insertando tabulaciones.



expand
Para convertir tabulaciones en espacios. A simple vista podría parecer de poca utilidad, pero prueba a combinarlo con otros comandos. Con join por ejemplo.

Ejecutandolo de la siguiente forma pondremos cinco espacios en las tabulaciones de fichero1.txt

expand -t 5 fichero1.txt



split
¿Archivos de excesivo tamaño? Quizá sea bueno dividirlo en varios fragmentos de menor tamaño. Seguramente estas pensando que los servidores tienen una capacidad bestial y esto no es necesario. Bien, veremos que pasa con ese log de sistema que aumenta a diario de tamaño y va por los 25 Gb. 

Lo mejor será fragmentarlo en varios pedazos de, por ejemplo, 700Mb:

split -b 700m archivo.log

Vale, no es exactamente un filtro para texto pero ¿y lo bien que funciona?



tr
Volvamos a los ficheros de texto. ¿Necesitas intercambiar caracteres? Entonces tr es tu amigo:

Parámetros: 

-c --complement: Todos los carácteres que no sean los indicados en SET1 los convierte en SET2
-d --delete: Borrar los carácteres especificados
-s --squeeze-repeats: Elimina carácteres repetidos
especificados 
-t --truncate-set1: Trunca SET1 a la longitud de SET2

Cambiando todo a mayúsculas:
 
echo 'Buenos días probemos el comando tr.' | tr [:lower:] [:upper:]
BUENOS DIAS PROBEMOS EL COMANDO TR. 
 
Eliminando letras: (Fijemonos que no elimina el carácter "í" al tener tilde)

echo Buenos días probemos el comando tr | tr -d ae
Bunos dís probmos l comndo tr 



uniq
Otro de los buenos filtros, sirve para borrar duplicados, veamos algunas opciones:

-u, --unique: sólo muestra líneas no repetidas.
-d, --repeated: Imprime lineas repetidas.



Conociendo estos comandos para filtrar y dividir archivos, además de las consolas, salidas, entradas y tuberias podemos comenzar a crear nuestros propios scripts, pero antes veremos que son las interrupciones para tener un conocimiento mayor del sistema.


martes, noviembre 12, 2013

Filtros en Linux.

Trabajos en la consola Linux


Intro:
El proceso de filtrar texto consisten en pasar un fichero de texto ( por ejemplo ) a la entrada de un comando que realizará las modificaciones indicadas para despues enviarlo a la salida estándar.
Ahora que conocemos operadores y redirecciones, no es mal momento para hablar de los filtros más utilizados para trabajar con tu consola. Deja atrás el "copy+paste" y comienza a manipular ficheros de forma eficaz y divertida:


Cat:
Nombre reducido de "concatenar" Utilizaremos este comando con los siguientes fines:
  • cat > fichero.txt : Podremos crear un fichero nuevo.
  • cat >> fichero.txt: Añadir información al fichero anteriormente creado.
  • cat fichero.txt: Nos permite ver el contenido del fichero.

Probemos entonces la concatenación de archivos. En primer lugar concatenaremos fichero_uno.txt y fichero_dos.txt en fichero_resultante.txt, sin que salga por pantalla :
  •  cat fichero_uno.txt fichero_dos.txt > fichero_resultante.txt.


Hagamos ahora que la concatenación salga por pantalla:

  • cat fichero_uno.txt fichero_dos.txt > fichero_resultante.tx | less



Join: 
Combina dos archivos comparando el contenido de los campos. Es un comando realmente útil y con mucho potencial pues realiza una concatenación de dos ficheros, igual que cat pero uniendo por un campo en comun entre los dos ficheros. A saber:

Contenido de fichero1.txt:
Cisco       Systems
Juniper     Networks
Siemens   AG

Contenido de fichero2.txt:
Cisco         Precio  1000
Juniper     Precio    800
Siemens    Precio  1200


Para ver la unión de los ficheros por los campos que coinciden, ejecutamos:

  • join fichero1.txt fichero2.txt


Cisco        Systems          Precio  1000
Juniper     Networks      Precio    800
Siemens    AG                Precio  1200


paste:

El comando paste nos facilita la tarea de "pegar" el contenido de un archivo en otro, sin embargo tiene alguna utilidad más empleando los modificadores -s y -d, de tal forma que si fichero1.txt  contiene ahora:


Cisco      
Juniper    
Siemens   
hola

Ejecutando: 
paste  -s fichero1.txt obtendremos el resultado de la columna en una linea:

 fichero1.txt
-----------------------------------
Cisco Juniper Siemens hola

Por otra parte, sin pasarle ningún argumento al comando paste, nos servirá para ver el contenido del fichero, como si de cat se tratase: paste fichero1.txt sacará por pantalla :

Cisco      
Juniper    
Siemens   
hola

Ahora, si ejecutamos:
paste  -d, -s fichero1.txt  ( ojo a la coma "," ) veríamos algo como esto:

"Cisco,Juniper,Siemens,hola"



En la próxima entrada vamos a revisar algunos comandos más de este tipo que también nos serán bastante útiles para manipular nuestros ficheros y trabajar con scripts.
Son comandos con una gran potencia y flexibilidad, aquí exploraremos su funcionamiento básico para tener con que empezar y saber de que herramientas disponemos para trabajar y realizar scrips.