Recherche de lignes avec SED

Fermé
sedforever - 20 déc. 2009 à 11:12
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 20 déc. 2009 à 13:54
Bonjour à tous,

Je suis tout nouveau sur ce forum, et une question existentielle me turlupine et hante mes nuits en ce moment.
Je dois développer un script permettant de faire de faire des sélections entre deux fichiers.

Mon problème est le suivant : Comment sélectionner avec un sed , les lignes contenant des chaines de caractères numériques appartenant à un certain intervalle de valeurs ?

ex :

A 123659
B 123671
C 523687
D 123680


Je ne voudrais sélectionner que les lignes comprises dans l 'intervalle [123659-123680]
donc ici exclure la C.

Merci d'avance pour vos réponses et bonne journée à vous !!!!!!

:)

3 réponses

Salut,

Avec grep

lami20j@debian:~$ cat bbb
A 123659
B 123671
C 523687
D 123680
E 123623
F 123677
G 123610
h 123601
lami20j@debian:~$ grep -E '1236(59|[6-7][0-9]|80)' bbb
A 123659
B 123671
D 123680
F 123677
lami20j@debian:~$
0
Re,

Avec sed

lami20j@debian:~$ sed -nr '/1236(59|[6-7][0-9]|80)/p' bbb
A 123659
B 123671
D 123680
F 123677
0
Re,

Et si tu ne veux pas utiliser les regex mais plutôt une comparaison de genre >= et <=
lami20j@debian:~$ awk '$2>=123659 && $2<=123680 {print}' bbb
A 123659
B 123671
D 123680
F 123677
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
20 déc. 2009 à 13:33
Salut,

T'as rien avec Perl ? Je suis déçu ;-DDD
0
lami20j > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
20 déc. 2009 à 13:42
Re,

Je commence (ce que je ne faisait pas ) à utiliser l'artillerie lourde si le besoin s'impose ;-).
Ca me permettre d'apprendre d'autres outils, ou je suis un novice pour le moment, je l'espère que pas pour longtemps.

Pour te faire plaisir ;-)))
lami20j@debian:~$ cat bbb
A 123659
B 123671
C 523687
D 123680
E 123623
F 123677
G 123610
h 123601
lami20j@debian:~$ perl -ne 'print if /1236(59|[67]\d|80)/' bbb
A 123659
B 123671
D 123680
F 123677


P.S. Je n'ai pas fait attention et je suis parti sur un intervalle quand il ne le fallait pas
Je parle pour [6-7] qu'on peut écrire [67] tout simplement
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > lami20j
20 déc. 2009 à 13:54
Merci ;-))


PS. J'avais vu dans un de tes messages que tu commençais à t'intéresser à awk et sed...
Mais bon vu tes connaissances en Perl, ça va être un jeu d'enfant ;-))
0