awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
- La
-F
bandera establece el separador de campo; Lo pongo entre comillas simples porque es un personaje especial de shell.
- Luego
$1 ~ /smiths/
aplica el siguiente {bloque de código} solo a las líneas donde el primer campo coincide con la expresión regular /smiths/
.
- El resto es igual a tu código.
Tenga en cuenta que dado que realmente no está usando una expresión regular aquí, solo un valor específico, podría usar con la misma facilidad:
awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename
Que verifica la igualdad de la cadena. Esto es equivalente a usar la expresión regular /^smiths$/
, como se menciona en otra respuesta, que incluye el ^
ancla para que solo coincida con el inicio de la cadena (el inicio del campo 1) y el $
ancla para que solo coincida con el final de la cadena. No estoy seguro de qué tan familiarizado está con las expresiones regulares. Son muy potentes, pero para este caso podría usar una verificación de igualdad de cadena con la misma facilidad.