[HP-UX 11i] grep avec regexp
Ola,
Je suis à la recherche d'un grep qui me permettra de me donner toutes les lignes qui contiennent un nombre de 3 chiffres commençant par 5 (bref tout de 500 à 599).
A titre d'exemple le fichier :
Code:
1 2 3 4 5 6 7 8
| >cat grep_test.txt
osef
pas 45189
bien 524 et
512 mais pas
54268 en revanche
il faut prendre 550
et pas le reste |
Il faudrait donc que ma commande me retourne les lignes :
Code:
1 2 3
| bien 524 et
512 mais pas
il faut prendre 550 |
Si je fais simplement ceci :
Code:
1 2 3 4 5 6
| >grep '5[0-9][0-9]' grep_test.txt
pas 45189
bien 524 et
512 mais pas
54268 en revanche
il faut prendre 550 |
Ce n'est pas bon
Il ne faut évidemment éviter les nombres qui terminent, commencent ou contiennent 5XX.
Code:
1 2
| >grep '[^0-9]5[0-9][0-9][^0-9]' grep_test.txt
bien 524 et |
mais je perd les lignes qui commencent ou finissent avec un 5XX.
Donc je me suis dit qu'il fallait que mon 5XX soit le début d'une ligne ou précéder par un blanc, ou la fin d'une ligne ou suivi par un blanc :
Code:
1 2
| >grep '[ ^]5[0-9][0-9][ $]' grep_test.txt
bien 524 et |
Toujours pas :mur:
Une idée ?
ceci à l'air de fonctionner
Au lieu d'essayer de trouver une seule regex qui me donne tout d'un coup, j'ai réussi avec 3 :
Code:
1 2 3 4
| >grep -e '^5[0-9][0-9][^0-9]' -e '[^0-9]5[0-9][0-9][^0-9]' -e '[^0-9]5[0-9][0-9]$' grep_test.txt
bien 524 et
512 mais pas
il faut prendre 550 |
cela fonctionne, mais je ne peux pas m’empêcher de me dire qu'il y a moyen de le faire en une seule regex... et pas via une combinaison de 3...