Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Filtros en Linux: pipes, tuberías: cut, sort, uniq, wc, tee, head, tail y grep


Conocimientos básicos, sobre los filtros en Linux. Para ello vamos a utilizar las herramientas más comunes de línea de comandos en sistemas UNIX y GNU/Linux. En concreto trataremos con las siguientes herramientas: cut, sort, uniq, wc, tee, head, tail y grep.



Filtros en Linux

Comando cut

El comando cut imprime partes seleccionadas de las líneas de entrada. El delimitador predeterminado es tabulador, pero podemos cambiar los delimitadores con la opción -d. El parámetro -f especifican qué campo incluir en la salida.

Comando sort

Este comando se encarga de ordenar las líneas de un texto. Aunque no es tan simple como parece. Digamos que podemos sacar más punta al lápiz, respecto a las partes exactas de cada línea que ordena y el orden final que se impondrá.

Sus opciones son:

  • -b Ignora los espacios en blanco.
  • -f No distingue entre mayúsculas y minúsculas.
  • -k Especifica las columnas que forman la clave de clasificación.
  • -n Compara campos con números enteros.
  • -r Orden de clasificación inverso.
  • -t Establece el separador de campo (por defecto es un espacio en blanco).
  • -u Genera registros únicos.

En el apartado anterior sobre cut tenéis un ejemplo de uso.

Comando uniq

Se encarga de imprimir líneas únicas. Su uso es similar a sort -u, pero tiene algunas opciones útiles que sort no emula: -c para contar el número de instancias de cada línea, -d para mostrar solo líneas duplicadas y -u para mostrar solo líneas no duplicadas.

Ejemplo de uso de uniq:


Comando wc

Se encarga de contar líneas, palabras y carácteres. Existen una serie de opciones que seleccionan la información que queremos que se imprima. Siempre en este orden: nueva línea, palabra, carácter, byte y longitud máxima de línea.

  • -c, –bytes, imprime los recuentos de bytes
  • -m, –chars, imprime el recuerto de carácteres
  • -l, –lines, imprime el recuento de líneas
  • -L, –max-line-length, imprime la longitud de la línea más larga
  • -w, –words, imprime el recuento de palabras

Comando tee

Una canalización de comandos suele ser lineal, pero a menudo es útil aprovechar el flujo de datos y enviar una copia a un archivo o a las ventanas de la terminal. Podemos hacer esto con el comando tee, que envía su entrada estándar tanto a la salida estándar como a un archivo dado que especifiquemos en la línea de comandos.

Una forma de uso básico sería:


wc -l file1.txt | tee file2.txt


Este comando comprobará el recuento de líneas del primer archivo y mostrará el resultado en la terminal, y a su vez lo guardará en el segundo archivo.

Comando head y tail

Estos comandos van a la par, se encargan de leer el principio o el final de un archivo. Leer líneas desde el principio o el final de un archivo es una operación administrativa bastante común.

Ambos comandos muestran diez líneas de forma predeterminada, pero podemos incluir parámetros para especificar cuantas líneas queremos ver.

Respecto a otros comandos como less, quizás head esta un poco anticuado; aún así es todavía muy utilizado en los scripts.

Uso del comando head

Se utiliza para mostrar información, si lo usamos sin parámetros, de las 10 primeras líneas de un archivo en la salida estándar.  También se puede utilizar para mostrar información de varios ficheros a la vez.

No tiene un gran número de parámetros, el más importante es «-n«, donde indicamos el número de líneas que queremos que nos muestre.

Por ejemplo:


$ head -n 20 /var/log/messages


De esta manera, en vez de mostrar 10 líneas, nos mostrará 20. El mismo resultado lo podemos encontrar, de la siguiente manera, utilizando el guión «–»


$ head -20 /var/log/messages


El otro parámetro es «-c» , que imprime los primeros bytes indicados:


$ head -c 100 /var/log/messages

Uso del comando tail

Quizás el comando tail es uno de los que más utilizo en mi día a día de SysAdmin. Es genial para consultar registros de actividad. En su uso básico nos muestra las 10 últimas líneas de un archivo. Tiene un poco más de miga que el comando head, del que hemos hablado antes.

En lo que respecta a tail, en combinación con el parámetro -f es particularmente útil para administradores de sistemas, sobre todo para consultar los ficheros de registros en directo. En lugar de salir inmediatamente después de imprimir el número de líneas solicitado:

tail -f

Espera a que se agreguen nuevas líneas al final del archivo y las imprime tal y como aparecen.

Su uso más habitual, por lo menos desde mi punto de vista, es junto con el parámetro «-f» , que genera información a medida que crece el archivo.

$ tail -f /var/log/apache/access.log

También le podemos indicar que nos muestre en pantalla un número dado de líneas:

$ tail -n 20 /var/log/messages

En este caso nos mostrará las 20 últimas líneas del fichero.

También le podemos decir que muestre la información a partir de una línea en concreto, de esta manera:

$ tail -n +20 /etc/passwd

De esta forma, utilizando el símbolo «+«, mostrará la información a partir de esa línea

Comando grep

El comando grep es una herramienta en sistemas operativos basados en Unix y Linux que se utiliza para buscar patrones dentro de archivos de texto. Su nombre proviene del comando «global/regular expression/print«, ya que se diseñó originalmente para buscar expresiones regulares en archivos y luego imprimir las líneas que coinciden. A lo largo de los años, grep ha evolucionado para incluir una amplia gama de funcionalidades y opciones. En esta guía, exploraremos en detalle el comando grep, sus opciones más comunes y ejemplos de uso.

Este popular comando busca un texto de entrada e imprime las líneas que coinciden con un patrón dado. Su nombre se basa en el comando g/regular-expression/p del antiguo editor ed, que venía con las primeras versiones de UNIX

Respecto a las expresiones regulares, podemos decir que se trata de patrones de coincidencia de texto, escritos en un estándar utilizado por la mayoría de los programas que hacen coincidencia de patrones, aunque existen variaciones menores entre las diferentes implementaciones.

Como la mayoría de los comandos en GNU/Linux, grep tiene un buen número de opciones, por ejemplo, con -c podemos imprimir un recuento de líneas coincidentes, con -i se ignoran el uso de mayúsculas y minúsculas en las coincidencias, y con -v se imprimen las líneas que no coinciden. Otro parámetro interesante es -l, que hace que grep imprima solo los nombres de los archivos coincidentes en lugar de imprimir cada línea.

Sintaxis básica

La sintaxis básica del comando grep es la siguiente:


grep [opciones] patrón [archivo(s)]

  • opciones: Son los modificadores que ajustan el comportamiento de grep.
  • patrón: Es la cadena de texto que grep buscará en el archivo.
  • archivo(s): Son los archivos en los que grep buscará el patrón. Si no se especifican archivos, grep buscará en la entrada estándar (por ejemplo, la salida de otro comando).

Opciones comunes de grep

A continuación, se detallan algunas de las opciones más utilizadas con el comando grep:

  • -i, --ignore-case: Ignora la distinción entre mayúsculas y minúsculas al buscar.
  • -v, --invert-match: Selecciona las líneas que no coinciden con el patrón.
  • -c, --count: Muestra el número de líneas que coinciden con el patrón en lugar de las líneas en sí.
  • -n, --line-number: Muestra el número de línea junto con la salida correspondiente.
  • -r, --recursive: Busca de manera recursiva en todos los archivos y directorios bajo el directorio dado.
  • -w, --word-regexp: Busca solo palabras completas que coincidan con el patrón.
  • -E, --extended-regexp: Interpreta el patrón como una expresión regular extendida.

Ejemplos de uso:

Supongamos que tenemos un archivo llamado datos.txt que contiene el siguiente texto:

Linux es un sistema operativo de código abierto.
Es ampliamente utilizado en servidores y sistemas embebidos.
El ecosistema de Linux incluye una gran variedad de distribuciones como Ubuntu, CentOS, y Fedora.

A continuación le aplicaremos algunas de las opciones del comando grep.

  • Opción -i, --ignore-case: Ignorar mayúsculas y minúsculas al buscar
grep -i "linux" datos.txt

Linux es un sistema operativo de código abierto.
El ecosistema de Linux incluye una gran variedad de distribuciones como Ubuntu, CentOS, y Fedora.
  • Opción -v, --invert-match: Seleccionar líneas que no coinciden con el patrón
grep -v "servidores" datos.txt

Linux es un sistema operativo de código abierto.
El ecosistema de Linux incluye una gran variedad de distribuciones como Ubuntu, CentOS, y Fedora.

  • Opción -c, --count: Mostrar el número de líneas que coinciden con el patrón
grep -c "sistema" datos.txt

2

  • Opción -n, --line-number: Mostrar el número de línea junto con la salida correspondiente
grep -n "Ubuntu" datos.txt

3:El ecosistema de Linux incluye una gran variedad de distribuciones como Ubuntu, CentOS, y Fedora.

  • Opción -r, --recursive: Buscar de manera recursiva en todos los archivos y directorios bajo el directorio dado:

Supongamos que tenemos una estructura de directorios como esta:

directorio/
├── datos.txt
└── subdirectorio
    └── mas_datos.txt

Contenido de mas_datos.txt:


Aplicamos la búsqueda sobre el directorio:
grep -r "Android" directorio/

directorio/subdirectorio/mas_datos.txt:Linux también es utilizado en dispositivos móviles a través de Android, una plataforma basada en el kernel de Linux.

  • Opción -w, --word-regexp: Buscar solo palabras completas que coincidan con el patrón:
grep -w "es" datos.txt
Linux es un sistema operativo de código abierto.

  • Opción -E, --extended-regexp: Interpreta el patrón como una expresión regular extendida:

Supongamos que queremos buscar todas las líneas que contienen «Linux» o «Ubuntu»:

grep -E "Linux|Ubuntu" datos.txt

Linux es un sistema operativo de código abierto.
El ecosistema de Linux incluye una gran variedad de distribuciones como Ubuntu, CentOS, y Fedora.

Estos ejemplos ilustran cómo cada opción del comando grep puede ser utilizada de manera práctica para buscar y filtrar información en archivos de texto en un sistema Unix o Linux.

El comando grep con su amplia gama de opciones te permite adaptar las búsquedas según las necesidades específicas del usuario. Al familiarizarse con las opciones y ejemplos proporcionados en esta guía, los usuarios pueden aprovechar al máximo las capacidades de grep para buscar y filtrar información de manera eficiente.

Fuentes:

https://www.ochobitshacenunbyte.com/2021/11/10/filtros-en-linux/

https://nosololinux.es/guia-completa-del-comando-grep-en-linux/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.