awk を使用します。 cat myfile | awk '{print $1}' | grep query
awk
が使える場合 、これを試してください:
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
説明:
awk
各行を読み取り、最初の列を正規表現 (regex) と照合します- 最初の列は Abc で始まり、その後に何か (0 回以上) が続き、def で終わる必要があります
- そのような一致が見つかった場合、2 番目の列を SUM 変数に追加します
- すべての行を読み取った後、変数を出力します
grep は、Abc で始まり、その後に何かが続き、def が続き、その後に何かが続き、最後に数字 (0 回以上) が続く各行を抽出します。これらの行は awk にフィード/パイプされます。 awk は、受信した行ごとに SUM をインクリメントするだけです。受信したすべての行を読み取った後、SUM 変数を出力します。