awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
- O sinalizador
-F
define o separador de campo; Eu coloquei entre aspas simples porque é um caractere especial de shell. - Em seguida,
$1 ~ /smiths/
aplica o seguinte {bloco de código} somente às linhas em que o primeiro campo corresponde à regex/smiths/
. - O resto é igual ao seu código.
Note que, como você não está realmente usando um regex aqui, apenas um valor específico, você pode facilmente usar:
awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename
Que verifica a igualdade de strings. Isso é equivalente a usar o regex /^smiths$/
, como mencionado em outra resposta, que inclui a ^
anchor para corresponder apenas ao início da sequência (o início do campo 1) e à $
anchor para corresponder apenas ao final da corda. Não tenho certeza de como você está familiarizado com regexes. Eles são muito poderosos, mas nesse caso você poderia usar uma verificação de igualdade de strings com a mesma facilidade.