awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
- The
-F
bendera menetapkan pemisah lapangan; Saya menuliskannya dalam tanda kutip tunggal karena ini adalah karakter shell khusus.
- Kemudian
$1 ~ /smiths/
menerapkan {code block} berikut ini hanya untuk baris di mana bidang pertama cocok dengan regex /smiths/
.
- Sisanya sama dengan kode Anda.
Perhatikan bahwa karena Anda tidak benar-benar menggunakan regex di sini, hanya nilai tertentu, Anda dapat dengan mudah menggunakan:
awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename
Yang memeriksa kesetaraan string. Ini sama dengan menggunakan regex /^smiths$/
, seperti yang disebutkan dalam jawaban lain, yang mencakup ^
jangkar untuk hanya cocok dengan awal string (awal bidang 1) dan $
jangkar untuk hanya cocok dengan ujung string. Tidak yakin seberapa akrab Anda dengan regex. Mereka sangat kuat, tetapi untuk kasus ini Anda dapat menggunakan pemeriksaan kesetaraan string dengan mudah.