Comandos Pipe, Grep y Sort en Linux/Unix con ejemplos

โšก Resumen inteligente

En Linux y Unix, los comandos pipe, grep y sort encadenan y filtran texto: una tuberรญa (pipe) introduce la salida de un comando en el siguiente, grep busca patrones y sort organiza las lรญneas, mientras que los filtros transforman los datos entre ellos.

  • ๐Ÿ”— Tubo: El sรญmbolo de tuberรญa | pasa la salida de un comando como entrada al siguiente.
  • ๐Ÿ“„ Paginaciรณn: El comando cat, con los parรกmetros less, pg o more, muestra un archivo largo pantalla por pantalla.
  • ๐Ÿ” grep: El comando grep busca en un archivo lรญneas que coincidan con una cadena o patrรณn.
  • ๐ŸŽš๏ธ Opciones de grep: Las opciones como -v, -c, -n, -i y -l invierten, cuentan, numeran, ignoran mayรบsculas y minรบsculas y listan archivos.
  • ๐Ÿ”ค ordenar: El comando sort ordena las lรญneas de un archivo, con las opciones -r, -n y -f para orden inverso, numรฉrico y sin distinciรณn entre mayรบsculas y minรบsculas.
  • ๐Ÿงช Filtros: Los comandos de filtrado como grep, sort, awk, sed y wc procesan la entrada canalizada y producen una salida.
  • ๐Ÿค– Ayuda de IA: Los asistentes de IA y GitHub Copilot pueden crear y explicar flujos de trabajo (pipe, grep y sort).

Comandos de tuberรญa, grep y ordenaciรณn en Linux y Unix con ejemplos

Las tuberรญas, grep y sort se encuentran entre las herramientas mรกs utilizadas en el Linux La lรญnea de comandos permite conectar comandos pequeรฑos en un flujo de trabajo potente. Esta pรกgina explica cada uno con ejemplos prรกcticos y muestra cรณmo los filtros los combinan.

ยฟQuรฉ es una tuberรญa en Linux?

La tuberรญa (pipe) es un comando de Linux que permite usar dos o mรกs comandos de forma que la salida de uno sirva como entrada para el siguiente. En resumen, la salida de cada proceso se introduce directamente en el siguiente, como en una tuberรญa. El sรญmbolo '|' representa una tuberรญa.

Las tuberรญas te permiten combinar dos o mรกs comandos simultรกneamente y ejecutarlos consecutivamente. Puedes usar comandos potentes que realizan tareas complejas en un instante.

Comprendamos esto con un ejemplo.

Cuando se utiliza el comando 'cat' para ver un archivo que abarca varias pรกginas, el indicador de comandos salta rรกpidamente a la รบltima pรกgina del archivo y no se ve el contenido intermedio.

Para evitar esto, puedes redirigir la salida del comando 'cat' a 'less', que te muestra solo una longitud de desplazamiento del contenido a la vez.

cat filename | less

Una ilustraciรณn lo aclararรญa. El diagrama a continuaciรณn muestra cรณmo una tuberรญa transmite la salida de un comando al siguiente.

Diagrama de una tuberรญa de Linux que pasa la salida de un comando como entrada al siguiente.

Comandos 'pg' y 'mรกs'

En lugar de 'less', tambiรฉn puede usar el comando pg o more:

cat Filename | pg

or

cat Filename | more

A continuaciรณn, puedes visualizar el archivo en fragmentos fรกciles de leer y desplazarte hacia abajo simplemente pulsando la tecla Intro. La siguiente captura de pantalla muestra un archivo paginado con el comando `more`.

El comando cat redirigiรณ el comando more paginando un archivo largo pantalla por pantalla.

El comando 'grep'

Supongamos que quieres buscar informaciรณn especรญfica, como un cรณdigo postal, en un archivo de texto.

Puedes ojear manualmente el contenido tรบ mismo para tracla informaciรณn. Una mejor opciรณn es utilizar la grep comando. Escanea el documento en busca de la informaciรณn deseada y presenta el resultado en el formato que usted prefiera.

Sintaxis:

grep search_string

Veรกmoslo en acciรณn. La captura de pantalla a continuaciรณn muestra el resultado de la bรบsqueda.

El comando grep busca en el archivo de muestra las cadenas "Apple" y "Eat".

Aquรญ, el comando grep ha buscado en el archivo 'sample' las cadenas 'Apple' y 'Eat'. Se pueden usar las siguientes opciones con este comando.

Opciรณn Funciรณn
-v Muestra todas las lรญneas que no coinciden con la cadena buscada.
-c Muestra solo el recuento de lรญneas coincidentes.
-n Muestra la lรญnea coincidente y su nรบmero.
-i Coincide tanto con mayรบsculas como con minรบsculas.
-l Muestra solo el nombre del archivo con la cadena.

Probemos la opciรณn '-i' en el mismo archivo utilizado anteriormente. La captura de pantalla a continuaciรณn muestra el resultado sin distinciรณn entre mayรบsculas y minรบsculas.

grep -i realiza una bรบsqueda sin distinciรณn de mayรบsculas y minรบsculas de la letra a

Al usar la opciรณn '-i', grep ha filtrado la cadena 'a' (sin distinguir entre mayรบsculas y minรบsculas) de todas las lรญneas.

El comando 'ordenar'

Este comando ayuda a ordenar alfabรฉticamente el contenido de un archivo.

La sintaxis de este comando es:

sort Filename

Considere el contenido de un archivo, que se muestra con el sรญmbolo de gato a continuaciรณn.

El comando cat muestra el contenido desordenado del archivo abc.

Al ejecutar el comando de ordenaciรณn, esas lรญneas se organizan en orden alfabรฉtico, como se muestra a continuaciรณn.

Comando de ordenaciรณn que organiza el contenido del archivo abc en orden alfabรฉtico.

Este comando tambiรฉn tiene extensiones, que se enumeran a continuaciรณn.

Opciรณn Funciรณn
-r Reverseclasificaciรณn de s
-n Ordena numรฉricamente
-f Ordenaciรณn sin distinciรณn entre mayรบsculas y minรบsculas

El siguiente ejemplo muestra la clasificaciรณn inversa del contenido del archivo "abc".

El comando sort -r ordena en orden inverso el contenido del archivo abc.

ยฟQuรฉ es un filtro?

Linux cuenta con numerosos comandos de filtro, como awk, grep, sed, spell y wc. Un filtro toma como entrada un comando, realiza algรบn procesamiento y genera una salida.

Al encadenar dos comandos, la salida "filtrada" del primero se pasa al siguiente. El siguiente diagrama ilustra cรณmo se integra un filtro en una secuencia de comandos.

Diagrama de un filtro Linux que recibe una entrada canalizada, la procesa y produce una salida.

Vamos a entender esto con la ayuda de un ejemplo. Tenemos el siguiente archivo 'sample', que se muestra con cat a continuaciรณn.

El comando cat muestra el contenido del archivo de muestra antes de filtrarlo.

Queremos resaltar รบnicamente las lรญneas que no contienen el carรกcter 'a', pero el resultado debe estar en orden inverso. Para ello, se puede utilizar la siguiente sintaxis:

cat sample | grep -v a | sort -r

Veamos el resultado, que se muestra en la captura de pantalla a continuaciรณn.

cat canalizado a travรฉs de grep -v y sort -r produciendo lรญneas en orden inverso sin la letra a

Preguntas Frecuentes

Una tuberรญa (|) envรญa la salida de un comando directamente a otro, encadenรกndolos. La redirecciรณn (> y <) conecta un comando a un archivo, escribiendo la salida en un archivo o leyendo la entrada de uno. Las tuberรญas enlazan comandos; la redirecciรณn enlaza comandos y archivos.

grep significa Impresiรณn Global de Expresiones Regulares. Escanea un archivo o entrada lรญnea por lรญnea e imprime cada lรญnea que coincida con el patrรณn que se le proporcione. El nombre proviene del antiguo comando del editor ed, g/re/p, que realizaba la misma bรบsqueda.

El comando `sort` tiene la opciรณn `-u` que ordena y elimina las lรญneas duplicadas en un solo paso: `sort -u archivo`. Tambiรฉn puedes usar `sort` con `uniq`, como en `sort archivo | uniq`, ya que `uniq` solo elimina los duplicados que ya son adyacentes.

Finaliza la canalizaciรณn con una redirecciรณn: `cat sample | grep -va | sort -r > result.txt` escribe el resultado final en un archivo. Para ver el resultado en pantalla y guardarlo al mismo tiempo, usa la redirecciรณn con el comando `tee`.

El comando `grep` busca dentro de los archivos lรญneas que coincidan con un patrรณn de texto. El comando `find` localiza archivos y directorios por nombre, tamaรฑo, tipo o fecha. En resumen, `grep` examina el contenido de los archivos, mientras que `find` los busca en todo el รกrbol de directorios.

El comando tee lee desde una tuberรญa y escribe los datos tanto en la pantalla como en uno o mรกs archivos a la vez; por ejemplo, `grep error log | tee errors.txt`. Permite guardar la salida intermedia sin interrumpir la tuberรญa.

Los asistentes de IA pueden sugerir la secuencia correcta de comandos encadenados a partir de una solicitud en lenguaje natural, explicar parรกmetros de grep o de ordenaciรณn desconocidos y detectar errores en una secuencia de comandos. Las herramientas de aprendizaje automรกtico tambiรฉn analizan la salida de los registros encadenados para detectar anomalรญas que pasarรญan desapercibidas con el filtrado manual.

Sรญ. Copiloto de GitHub Puede generar secuencias de comandos que combinan cat, grep y sort a partir de un breve comentario que describa lo que necesita, y completar los comandos a medida que escribe. RevRevise cualquier flujo de trabajo sugerido con datos de muestra, especialmente las opciones que reordenan o eliminan lรญneas.

Resumir este post con: