awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
-F
Bayrak alan ayırıcısını belirler; Özel bir kabuk karakteri olduğu için bunu tek tırnak içine koydum.
- Ardından
$1 ~ /smiths/
, aşağıdaki {kod bloğu} yalnızca ilk alanın regex ile eşleştiği satırlara uygulanır /smiths/
.
- Gerisi sizin kodunuzla aynı.
Gerçekten burada bir regex kullanmadığınızdan, sadece belirli bir değere sahip olduğunuzdan, aşağıdaki kadar kolay kullanabileceğinizi unutmayın:
awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename
Hangi dize eşitliği kontrol eder. Bu, yalnızca dizenin başlangıcıyla (alan 1'in başlangıcı) eşleşecek olan tutturucu ve dizenin yalnızca eşleşmesi için tutturulmuş kenet /^smiths$/
içeren başka bir cevapta belirtildiği gibi regex'i kullanmaya eşdeğerdir . Regex'lere ne kadar aşina olduğunuzdan emin değilim. Çok güçlüler, ancak bu durumda bir dize eşitliği kontrolünü bu kadar kolay bir şekilde kullanabilirsiniz.^
$