Cherchez-vous un code régional entier ou un code régional qui contient le sous-modèle ?
Si vous voulez le code de la région entière et qu'il y a au moins un espace de chaque côté, vous pouvez formater le grep en ajoutant un espace unique de chaque côté du code de la région spécifique. Il existe d'autres moyens d'indiquer les limites des mots à l'aide d'expressions régulières.
grep ' 04 ' numbers.txt
S'il peut y avoir des espaces dans les champs du nom ou du numéro de téléphone, cette solution risque de ne pas fonctionner. De même, si le motif peut être une sous-partie du code de la région, awk est un meilleur outil. Cela suppose que le champ "nom" ne contient pas d'espaces. L'opérateur de correspondance "==" exige que le motif corresponde exactement au champ. Cela peut s'avérer délicat lorsqu'il y a des espaces de part et d'autre du champ.
awk '$2 == "04" {print $0}' < numbers.txt
Si le fichier a un délimiteur, celui-ci peut être défini dans awk en utilisant l'argument '-F' à awk pour définir le caractère de séparation des champs. Dans cet exemple, une virgule est utilisée comme séparateur de champ. En outre, l'opérateur de correspondance dans cet exemple est un '~', ce qui permet au motif d'être n'importe quelle partie du code de région (si cela est applicable). Le "/y" est un moyen de faire correspondre les limites de travail au début et à la fin de l'expression.
awk -F , '$2 ~ /\y04\y/ {print $0}' < numbers.txt
Dans les deux exemples, le {print $0} est optionnel, si vous voulez que la ligne entière soit imprimée. Cependant, si vous souhaitez effectuer un quelconque formatage de la sortie, vous pouvez le faire à l'intérieur de ce bloc.