12 Filtros Linux

  • Upload
    dzier

  • View
    4.345

  • Download
    1

Embed Size (px)

DESCRIPTION

Presentacion de la clase de Linux, creada por eduardo gallardo

Citation preview

Filtros - GNU/Linux

Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

1

Filtros Bsicos

Un filtro es un programa que reciben una entrada, la procesa y emite una salida. Obviamente hay un discernimiento relacionado a la entrada. Son una parte fundamental del sistema ya que relacionando filtros simples se puede conseguir prcticamente cualquier cosa, a nivel de administracin de archivos y Scripts. Algunos ejemplos: para mostrar la entrada: cat. para seleccionar una parte de la entrada: grep, tail, head y cut. para paginar la entrada: less y more. para ordenar la entrada: sort. para alterar la entrada en forma ordenada: tr. para comparar dos entradas: comm y diff. para contar la entrada: wc. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos grep Su funcin principal es imprimir por pantalla solamente las lneas que concuerden con un patrn que nosotros le indicamos. Por ejemplo: ls -l | grep archivo, nos mostrar todas las lneas del ls -l que concuerden con archivo. Algunas opciones son: -i (ignore case) que no tome en cuenta maysculas ni minsculas. -n para que muestre el nmero de lnea dentro del archivo. -v para que muestre las lneas que no concuerdan con la palabra ingresada. Ejercicio: Crear archivo usando el editor vi que tenga unas cuantas lneas de la forma: nombre: telfono. Por lo menos cuatro o cinco lneas. Crearemos un Script que contenga lo siguiente: grep -i "$*". Para buscar un telfono haremos: nombreScript nombre. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos tail El comando tail nos permite ver la cola de un archivo, es decir, sus ltimas lneas. Presentar las ltimas 10 por omisin. Resulta de gran utilidad para ver archivos grandes. Por ejemplo, logs (archivos donde se guardan mensajes de estado y/o de errores). Para probar el comando podemos ejecutar tail /var/log/messages y compararlo con la salida de cat /var/log/messages. A tail podemos indicarle cuntas lneas queremos que nos muestre. Opcin -20, nos mostrara 20 lneas. Opcin +5, nos mostrara el contenido del archivo a partir de la lnea 5 en adelante. Comando similar es head, la diferencia es que en lugar de mostrar las ltimas lneas de la entrada, muestra las primeras. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos sort Nos permite obtener una salida ordenada, si hacemos ls | sort obtendremos la salida de ls con un orden alfabtico. Probemos ls -i | sort ... sort ordena la salida de ls alfabticamente, eso quiere decir que los nmeros no van a estar ordenados de menor a mayor sino en orden alfabtico. Para ordenarlos numricamente existe la opcin -n. ls -i | sort -n producir una salida ordenada de menor a mayor. Si quisiramos que lo ordene de mayor a menor, debemos usar ls -i | sort -nr, es decir -r ordena en orden inverso. Tambin podemos ordenar por una determinada columna. Por ejemplo, ls -l, estas lneas pueden ser ordenadas por tamao, por nombre, por fecha, etc. Para eso tenemos que indicarle cual columna tiene que ordenar y con qu criterio. Ojo que sort cuenta las columnas empezando de 0. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos sort (Cont.) Ejemplos: ls -l | sort +4nr ordena la salida de ls por el tamao dejando los ms chicos al final. En este caso, la n, que indica ordenamiento numrico es opcional, ya que sort decide automticamente el ordenamiento. ls -l | sort +4n +8 ordena la salida de ls primero, es decir, por tamao y luego por el nombre del archivo. En este caso, es necesario poner la n, que indica ordenamiento numrico. Existe un opcion -u que nos permite eliminar las lineas iguales adyacentes de la salida de sort. Si la salida produce dos lneas iguales una debajo de otra, veramos solamente una lnea. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos tr Nos permite transliterar caracteres, es decir cambiar determinado caracter por otro. Si escribimos tr a-z A-Z < archivo, veremos que tr transforma todas las minsculas en maysculas. Los parmetros del ejemplo anterior son rangos (de la a a la z y de la A a la Z), pero no es necesario que lo sean.

Lo que exige tr es que los parmetros tengan la misma cantidad de caracteres, o bien que el segundo sea un slo caracter. En este caso reemplazar todos los caracteres del primer parmetro con el del segundo. La opcin -c indica que deben transliterarse todos los caracteres que no estn incluidos en el primer parmetro. Ejemplo: cat archivo | tr -c a-zA-Z \n | tr A-Z a-z | sort -u tr convierte todo lo que no sea letras en \n, el segundo convierte todas las maysculas en minsculas y el sort del final las ordena alfabticamente eliminando las lneas iguales, con lo que obtenemos una palabra por lnea. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos comm Nos permite comparar el contenido de dos archivos, lnea por lnea. Ejercicio: Crear dos archivos, que tengan unas cuantas lneas en comn, y otras distintas. Luego, debemos hacer: comm archivo1 archivo2. La salida est separada en tres columnas: en la primera estarn las lneas que estn en el primer archivo y no en el segundo, en la segunda veremos las lneas del segundo archivo que no estn en el primero y por ltimo, las que estn en los dos. Adems podemos indicar cul de esas columnas no queremos que muestre, por ejemplo comm -12 arch1 arch2 muestra solamente la tercera columna, es decir, las lneas que estn en ambos archivos. El problema que tiene comm es que espera que las lneas estn en la misma posicin dentro del archivo. Para procesamiento ms avanzado de diferencias de archivos puede utilizarse el comando diff. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Bsicos comm (Cont.) Ejemplo: En /usr/share/dict/ normalmente tenemos un archivo diccionario, en el cual encontramos una palabra por rengln. En especial, el archivo words suele ser un symlink al diccinario del idioma de nuestro sistema. Crear analizador ortogrfico, usando los filtros recin vistos. comm verificar si la palabra est en el diccionario (que nos avise si no est). Debemos llevar el texto a una palabra por lnea ordenada alfabticamente. Finalmente, utilizar comm para comparar con el diccionario. El comando completo sera: cat archivo | tr -c a-zA-Z \n | tr A-Z a-z | sort -u | comm -23 - /usr/share/dict/words. Notar que el - como parmetro del comm le indica que use la entrada estndar para leer el primer archivo. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Avanzados Expresiones regulares: Las expresiones regulares son cadenas de caracteres que permiten transmitirle a los filtros una bsqueda mucho ms avanzada. Por ejemplo: Indicarle si queremos que algo est al principio o al final de un archivo, si queremos que est repetido una determinada cantidad de veces, etc. grep: La gran fortaleza de grep se encuentra en la sintaxis del patrn. Hasta ahora, el patrn que ingresbamos era simplemente una palabra, y eso le indicaba a grep que deba encontrar las lneas que contuvieran esa palabra. Sin embargo, en ese patrn podemos incluir una expresin regular. Tenemos la posibilidad. Algunas de las opciones: El smbolo ^ indica comienzo de lnea, es decir, que el patrn que est a continuacin debe estar al principio de la lnea. Por ejemplo, todas las lneas del comando who que comienzan con un nombre de usuario en particular: who | grep ^usuario. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Avanzados grep (Cont.): El smbolo $ al final de un patrn significa que debe estar ubicado al final de la lnea. El smbolo . acta como el ? en el shell, es decir, concuerda con cualquier caracter, pero slo una sola vez. Por ejemplo, si hacemos ls -l | grep ^.......rw veremos los archivos que tengan permisos de lectura y escritura para los otros.

Tambin tenemos un manejo de rangos [...] muy parecido al del Shell. El smbolo * nos permite que el ltimo caracter se encuentre 0 o ms veces. Es decir, utilizando .* obtendremos el mismo comportamiento que el del * de shell. Por ejemplo, ls -l | grep ^.*rw puede mostrarnos los archivos que tengan algn permiso de escritura y lectura, o bien algn archivo que contenga las letras rw en su nombre.

Un problema comn es que muchos de los caracteres que grep usa como caraceres especiales son los mismos que usa el shell como metacaracteres y esto puede llegar a confundirnos. (Usar ' ' o \) Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

Filtros Avanzados egrep y fgrep Ambos pertenecen a la misma familia de comandos que grep. egrep tiene un conjunto de expresiones regulares ms completo. fgrep esta optimizado para manejo de archivos grandes, pero slo busca literales. La versin GNU de estos comandos resume los tres (grep, egrep y fgrep) dentro de grep con las opciones -E y -F Existen ms, como por ejemplo el ngrep (network grep), grepmail, etc.

Algunos modificadores de grep: Caracter: cualquier caracter no especial. \CaracterEspecial: escapea significado especial del caracter. ^: inicio de lnea. $: fin de lnea. .: Cualquier caracter. [...]: rango de caracteres. [^...]: negacin del rango de caracteres. Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Caracter*: cero o ms ocurrencias del caracter. Email: [email protected] WEb: www.duoc.cl

Consultas?

Antonio Varas 666 Providencia, Santiago, Chile Fono: (562) 354 04 00 Email: [email protected] WEb: www.duoc.cl

13