voici le fichier1 existe-t-il un ongleiner AWK qui ne trouve que des lignes à trois chiffres dans le premier champ? p> p>
7 Réponses :
awk '{ if ($1 ~ /^[0-9][0-9][0-9]$/) print $0}' file Note that we're using a reg-ex that specifies 3 char-classes (anything inside [..]), of just 0-9. The first field of a file is denoted as $1. The '^' and '$', indicate start and end of field. If we don't have those there, fields with 4 or more digits will also match.I hope this helps.
devrait probablement être awk '{si ($ 1 ~ / ^ [0-9] [0-9] [0-9] $ /) print 0}' ou correspond à toutes les lignes ayant au moins 3 chiffres, ? (en supposant que l'OP veuille exactement trois chiffres)
Oui, je testais / éditerais et j'ai ajouté cela. Merci pour le 2e ensemble d'yeux!
awk '/^[0-9][0-9][0-9]$/ {print $0}' file
Voici un:
awk '$1 ~ /^[0-9]{3}$/' file1
gawk --posix '$1 ~ /^[0-9]{3}$/' file1
{} code> Les gammes ne nécessitent pas GAWK, juste un POSIX conforme awk. Vous n'avez pas besoin du drapeau code> - posix code> lorsque vous utilisez avec GAWK.
@ Michaelj.barber {} code> Les gammes sont activées par défaut depuis GAWK 4.0. Dans les versions antérieures, vous devez passer
-w re-intervalle code> ou
-w posix code> (ou équivalents d'options de gnu long) pour l'activer.
Si nous pouvons supposer que le premier champ contient uniquement des numéros: sinon, accédez à l'une des solutions de regex. p> une solution alternative : P>
awk '$1 >= 100 && $1 <= 999' file1
Environ 1 000 fois plus lisible que toutes les solutions REGEXP (y compris la mine)
Un peu peu orthodoxe mais vous pouvez le faire aussi -
[jaypal~/Temp]$ cat text7 200 201 202 203 204 205 2001 2002 2003 2004 2005 [jaypal~/Temp]$ awk 'BEGIN{FS="";} NF<4{print}' text7 200 201 202 203 204 205
Peu orthodoxe et inutile. Selon POSIX: "Si FS est une chaîne nulle, le comportement n'est pas spécifié". Et cela ne fonctionne pas lorsque l'entrée contient plus d'un champ.
awk '{num=$1/1; if (num == $1) if (length($1) == 3) print $0}' file Should work with leading zero(s)