Verwenden Sie awk. cat myfile | awk '{print $1}' | grep query
Wenn Sie awk
verwenden können , versuchen Sie Folgendes:
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
Erklärung:
awk
liest jede Zeile und vergleicht die erste Spalte mit einem regulären Ausdruck (regex)- Die erste Spalte muss mit Abc beginnen, gefolgt von irgendetwas (null oder mehr Mal) und endet mit def
- Wenn eine solche Übereinstimmung gefunden wird, fügen Sie der SUM-Variablen die zweite Spalte hinzu
- Nachdem alle Zeilen gelesen wurden, geben Sie die Variable aus
Grep extrahiert jede Zeile, die mit Abc beginnt, gefolgt von irgendetwas, gefolgt von def, gefolgt von irgendetwas, gefolgt von einer Zahl (null oder mehrmals) am Ende. Diese Leitungen werden zu awk geleitet/geleitet. Awk erhöht einfach SUM für jede empfangene Zeile. Nach dem Lesen aller empfangenen Zeilen gibt es die Variable SUM aus.