Utilisez awk. cat myfile | awk '{print $1}' | grep query
Si vous pouvez utiliser awk
, essayez ceci :
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
Explication :
awk
lit chaque ligne et correspond à la première colonne avec une expression régulière (regex)- La première colonne doit commencer par Abc, suivi de n'importe quoi (zéro ou plusieurs fois) et se terminer par def
- Si une telle correspondance est trouvée, ajoutez la 2e colonne à la variable SUM
- Après avoir lu toutes les lignes, imprimez la variable
Grep extrait chaque ligne commençant par Abc, suivi de n'importe quoi, suivi de def, suivi de n'importe quoi, suivi d'un nombre (zéro ou plusieurs fois) pour terminer. Ces lignes sont alimentées/acheminées vers awk. Awk incrémente simplement SUM pour chaque ligne qu'il reçoit. Après avoir lu toutes les lignes reçues, il imprime la variable SUM.