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

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.


Fuentes:

https://www.ochobitshacenunbyte.com/2021/11/10/filtros-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.