GNU/Linux >> Tutoriales Linux >  >> Linux

grep para buscar datos en la primera columna

Usa awk. cat myfile | awk '{print $1}' | grep query


Si puedes usa awk , prueba esto:

text.txt
--------
Product   Cost
Abc....def  10
Abc.def     20
ajsk,,lll   04

With only awk:
awk '$1 ~ /^Abc.*def$/ { SUM += $2 } END { print SUM } ' test.txt
Result: 30

With grep and awk:
grep "^Abc.*def.*\d*$" test.txt | awk '{SUM += $2} END {print SUM}'
Result: 30

Explicación:

  • awk lee cada línea y hace coincidir la primera columna con una expresión regular (regex)
  • La primera columna debe comenzar con Abc, seguida de cualquier cosa (cero o más veces) y termina con def
  • Si se encuentra tal coincidencia, agregue la segunda columna a la variable SUM
  • Después de leer todas las líneas, imprima la variable

Grep extrae cada línea que comienza con Abc, seguido de cualquier cosa, seguido de def, seguido de cualquier cosa, seguido de un número (cero o más veces) hasta el final. Esas líneas se alimentan/canalizan a awk. Awk solo incrementa SUM por cada línea que recibe. Después de leer todas las líneas recibidas, imprime la variable SUM.


Linux
  1. ¿Coincidencia de patrones multilínea usando Sed, Awk o Grep?

  2. ¿Capturar grupos con Awk o Grep?

  3. ¿Cómo imprimir la tercera columna en la última columna?

  4. Se necesita expresión regular (grep) para la búsqueda de varias líneas

  5. usando awk con condiciones de valor de columna

Cómo usar el comando grep en Linux/UNIX

Cómo excluir en Grep

Cómo realizar una búsqueda de patrones en archivos usando Grep

Comando awk de Linux con 10 ejemplos

Usando grep vs awk

Usar awk para sumar los valores de una columna, en función de los valores de otra columna