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