GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuáles son las diferencias entre grep, awk y sed?

Solo quiero mencionar una cosa, hay muchas herramientas que pueden procesar texto, por ejemplo, ordenar, cortar, dividir, unir, pegar, comm, uniq, column, rev, tac, tr, nl, pr, head, tail... ..

son muy útiles pero tienes que aprender sus opciones, etc.

Una forma perezosa (no la mejor) de aprender procesamiento de texto podría ser:solo aprender grep , sed y awk. Con estas tres herramientas, puede resolver casi el 99% de los problemas de procesamiento de texto y no necesita memorizar los diferentes comandos y opciones anteriores. :)

Y, si aprendió y usó los tres, sabía la diferencia. En realidad, la diferencia aquí significa qué herramienta es buena para resolver qué tipo de problema.

una forma más perezosa podría ser aprender un lenguaje de script (python, perl o ruby) y hacer todo el procesamiento de texto con él.


Definición corta:

grep :busca términos específicos en un archivo

#usage
$ grep This file.txt
Every line containing "This"
Every line containing "This"
Every line containing "This"
Every line containing "This"

$ cat file.txt
Every line containing "This"
Every line containing "This"
Every line containing "That"
Every line containing "This"
Every line containing "This"

Ahora awk y sed son completamente diferentes a grep .awk y sed son procesadores de texto. No solo tienen la capacidad de encontrar lo que está buscando en el texto, también tienen la capacidad de eliminar, agregar y modificar el texto (y mucho más).

awk se utiliza principalmente para la extracción de datos y la elaboración de informes. sed es un editor de secuencias
Cada uno de ellos tiene su propia funcionalidad y especialidades.

Ejemplo
sed

$ sed -i 's/cat/dog/' file.txt
# this will replace any occurrence of the characters 'cat' by 'dog'

Awk

$ awk '{print $2}' file.txt
# this will print the second column of file.txt

Básico awk uso:
Calcule la suma/promedio/máximo/mínimo/etc. lo que puedas necesitar.

$ cat file.txt
A 10
B 20
C 60
$ awk 'BEGIN {sum=0; count=0; OFS="\t"} {sum+=$2; count++} END {print "Average:", sum/count}' file.txt
Average:    30

Te recomiendo que leas este libro:Sed &Awk:2nd Ed.

Le ayudará a convertirse en un usuario competente de sed/awk en cualquier entorno similar a Unix.


Grep es útil si desea buscar rápidamente líneas que coincidan en un archivo. También puede devolver otra información simple, como números de línea coincidentes, recuento de coincidencias y listas de nombres de archivos.

Awk es un lenguaje de programación completo creado para leer archivos de estilo CSV, procesar los registros y, opcionalmente, imprimir un conjunto de datos de resultados. Puede hacer muchas cosas, pero no es la herramienta más fácil de usar para tareas simples.

Sed es útil cuando desea realizar cambios en un archivo en función de expresiones regulares. Le permite unir fácilmente partes de líneas, hacer modificaciones e imprimir resultados. Es menos expresivo que awk pero eso lo hace un poco más fácil de usar para tareas simples. Tiene muchos operadores más complicados que puede usar (creo que incluso está completo), pero en general no usará esas funciones.


Linux
  1. Debian vs Ubuntu:¿Cuáles son las diferencias?

  2. ¿Qué hace que Grep considere que un archivo es binario?

  3. Enrutador pfSense vs Netgear:¿Cuáles son las principales diferencias?

  4. ¿Cuáles son las diferencias entre `chattr +i FILE` y `chmod -w FILE`?

  5. ¿Qué comandos están disponibles en la sección %pre de un archivo Kickstart en CentOS?

Cassandra vs MongoDB - ¿Cuáles son las diferencias?

Terraform vs Kubernetes:¿Cuáles son las diferencias?

Docker ADD vs COPY:¿Cuáles son las diferencias?

IMAP, POP3 y SMTP:¿cuáles son las diferencias?

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

useradd vs adduser:¿Cuáles son las diferencias?