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.