Sistemas / enero 13, 2018

Filtros y herramientas en GNU/Linux [Parte 1]

En sistemas, se conoce como filtro un programa que sabe escribir y leer datos por los canales estándares de entrada y salida. Dicho programa modifica o trata si es preciso el contenido. Por ejemplo, wc es un filtro. Las herramientas no siempre se comportan como filtros. Permiten un determinado número de acciones en archivos y su contenido, como por ejemplo, dar formato o imprimir.

Extrayendo rutas y nombres

Tenemos dos comandos que nos van a facilitar mucho la vida, sobretodo a la hora de realizar scripts. Estos comandos son basename y dirname:

  • El comando basename permite extraer el nombre del archivo en una ruta:

basename /etc/hosts
hosts
  • El comando dirname permite extraer lo contrario, la ruta o path:

dirname /etc/hosts
/etc

Búsqueda de líneas

Se trata de extraer líneas de un archivo según varios criterios. Para ello, disponemos de tres comandos: grep, egrep, y fgrep, que leen los datos o bien desde un archivo de entrada , o bien desde el canal de entrada estándar.

grep

La sintaxis del comando grep es muy sencilla:


grep [Opciones] modelo [Archivo…]

El modelo se compone de criterios de búsqueda, que pueden ser cadenas de texto o bien expresiones regulares. Por ejemplo:


cat file
Software Libre
Richard Stallman
Gimp
Inkscape
PortalLinux
software
Open Source

Si queremos filtrar por las palabras que empiezan por ese sin importar si es mayúscula o minúscula:


grep “^[sS]” file
Software Libre
software

Otras opciones interesantes del comando grep:

  • -v: efectúa la búsqueda inversa y se visualizarían todas aquellas palabras excepto Software Libre y software.
  • -c: devuelve el número de líneas encontradas, sin mostrarlas.
  • -i: no diferencia entre mayúsculas ni minúsculas.
  • -n: indica el número de líne para cada línea encontrada

grep -n “^[sS]” file
1:Software Libre
6:software
  • -l: en el caso de ficheros múltiples, indica en qué archivo se ha encontrado la línea.

egrep

El comando egrep extiende los criterios de búsqueda y puede aceptar un archivo de criterios en entrada. Equivale a un grep -E. Emplea como criterios expresiones regulares. Por ejemplo, si tenemos el mismo fichero de antes y creamos uno nuevo con el criterio antes puesto entre comillas:


cat file
Software Libre
Richard Stallman
Gimp
Inkscape
PortalLinux
software
Open Source

cat criterio
^[sS]

egrep -f criterio file
Software Libre
software

fgrep

El comando fgrep es un grep simplificado y rápido (fast grep) y equivale a un grep -F. Acepta también un archivo de criterios de búsqueda, pero debe tratarse de criterios simples, sin caracteres especiales, es decir, texto y cifras.

sed

Del comando sed podríamos hacer un libro. Sed es un editor de flujo (Stream Editor) que permite filtrar y transformar texto. Es un poco como un editor que permite modificar texto vía comandos de scripts, pero en un paso y sin edición interactiva.

Para utilizar sed hay que tener un control bastante bueno de las expresiones regulares -de las cuales algún día hablaremos profundamente- El cuadro del comando egrep retoma la sintaxis básica de las expresiones. Cualquier libre sobre sed parte de estas expresiones y reciprocamente.

Muchas veces vamos a ver el comando sed que se utiliza para sustituir cadenas de texto:


# echo “Me llamo Agapito” | sed -e ‘s/Agapito/Manolo/’
Me llamo Manolo

Son las tantas de la noche cuando estoy escribiendo esto y creo que con sed realmente se podría hacer mil entradas explicando que se puede hacer. Así que por el momento, nos vamos a quedar con este ejemplo tan útil.


Ningún comentario “Filtros y herramientas en GNU/Linux [Parte 1]”

Leave a Reply

avatar
500
  Suscribirte  
Notificarme

Utilizamos cookies propias y de terceros para mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Doble clic sobre aquí para cerrar.