GNU/Linux >> Linux Esercitazione >  >> Linux

grep per cercare i dati nella prima colonna

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


Se puoi usa awk , prova questo:

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

Spiegazione:

  • awk legge ogni riga e confronta la prima colonna con un'espressione regolare (regex)
  • La prima colonna deve iniziare con Abc, seguita da qualsiasi cosa (zero o più volte) e terminare con def
  • Se viene trovata tale corrispondenza, aggiungi la seconda colonna alla variabile SUM
  • Dopo aver letto tutte le righe stampa la variabile

Grep estrae ogni riga che inizia con Abc, seguita da qualsiasi cosa, seguita da def, seguita da qualsiasi cosa, seguita da un numero (zero o più volte) alla fine. Quelle righe vengono inviate/convogliate a awk. Awk incrementa semplicemente SUM per ogni riga che riceve. Dopo aver letto tutte le righe ricevute, stampa la variabile SUM.


Linux
  1. Regex e grep:flusso di dati e blocchi predefiniti

  2. Come cercare in file specifici che corrispondono a un modello?

  3. Come stampare dalla terza colonna all'ultima colonna?

  4. Come tagliare le prime n e le ultime n colonne?

  5. grep per termine ed escludi un altro termine

Estrazione e visualizzazione dei dati con awk

Come usare il comando grep in Linux/UNIX

Come escludere in Grep

Come eseguire la ricerca del modello nei file utilizzando Grep

Comando awk di Linux con 10 esempi

Utilizzo di awk per sommare i valori di una colonna, in base ai valori di un'altra colonna