awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
-F
Флаг устанавливает разделитель полей; Я поместил его в одинарные кавычки, потому что это специальный символ оболочки.
- Затем
$1 ~ /smiths/
применяет следующий {кодовый блок} только к строкам, где первое поле соответствует регулярному выражению /smiths/
.
- Остальное так же, как ваш код.
Обратите внимание, что поскольку вы на самом деле здесь не используете регулярное выражение, а просто конкретное значение, вы можете также легко использовать:
awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename
Который проверяет равенство строк. Это эквивалентно использованию регулярного выражения /^smiths$/
, как упомянуто в другом ответе, который включает в себя привязку, которая соответствует ^
только началу строки (начало поля 1), и $
привязку, чтобы соответствовать только концу строки. Не уверен, насколько вы знакомы с регулярными выражениями. Они очень мощные, но для этого случая вы можете использовать проверку на равенство строк так же легко.