Вы ищете весь код региона или код региона, который содержит подшаблон?
Если вам нужен весь код региона, и с обеих сторон есть хотя бы один пробел, вы можете отформатировать grep, добавив один пробел с каждой стороны от конкретного кода региона. Есть и другие способы обозначить границы слов с помощью регулярных выражений.
grep ' 04 ' numbers.txt
Если в полях имени или номера телефона могут быть пробелы, это решение может не сработать. Кроме того, если шаблон может быть частью кода региона, то awk - лучший инструмент. Это предполагает, что поле «имя» не содержит пробелов. Оператор сопоставления '==' требует, чтобы шаблон точно совпадал с полем. Это может быть сложно, когда есть пробелы по обе стороны поля.
awk '$2 == "04" {print $0}' < numbers.txt
Если файл имеет разделитель, его можно установить в awk, используя аргумент '-F' для awk для установки символа разделителя полей. В этом примере запятая используется в качестве разделителя полей. Кроме того, оператор сопоставления в этом примере представляет собой «~», позволяющий шаблону быть любой частью кода региона (если это применимо). «/ Y» - это способ сопоставления рабочих границ в начале и конце выражения.
awk -F , '$2 ~ /\y04\y/ {print $0}' < numbers.txt
В обоих примерах {print $ 0} является необязательным, если вы хотите, чтобы была напечатана полная строка. Однако, если вы хотите выполнить какое-либо форматирование на выходе, это можно сделать внутри этого блока.