Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/06/2016, à 23:21

Nym

[Résolu] Changement dans interprétation regexp ?

Bonjour.

J'utilise des répertoires de sauvegarde horodatés, sous la forme aaaammjj-hhmm-type où type donne le type de la sauvegarde sur 4 lettres (complète, incrémentale...).
Pour faire le tri dans ces répertoires et ne retenir que celui contenant la dernière sauvegarde complète, par exemple, je pensais utiliser le code suivant :

ls /media/Backup | awk '/^[0-9]{8}\-[0-9]{4}\-Comp/ {print $0}'

Eh bien ça ne fonctionne pas alors que

ls /media/Backup | awk '/^[0-9]+\-[0-9]+\-Comp/ {print $0}'

et

ls /media/Backup | awk '/^[0-9]+-[0-9]+-Comp/ {print $0}'

fonctionnent parfaitement.
J'ai cherché dans les pages man de awk et egrep, mais je ne comprends pas pourquoi mes spécifications avec accolades ne sont pas interprétées.
Quelqu'un aurait-il une explication ?

Je pourrais certes faire ça ainsi :

ls /media/Backup | awk '/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-Comp/ {print $0}'

Mais je ne trouve pas ça très élégant.

Dernière modification par Nym (Le 01/07/2016, à 19:57)


Nym
Ubuntu 18.04.1 LTS 64bits

Hors ligne

#2 Le 30/06/2016, à 23:59

bertrand0

Re : [Résolu] Changement dans interprétation regexp ?

Il faudrait savoir vers quelle implementation de awk pointe le lien symbolique /usr/bin/awk.
S'il s'agit de gawk, tu pourrais avoir à préciser l'option -r selon la version. Dans tous les cas, il faut te référer à la page de man de ta version : gawk, mawk, nawk...


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#3 Le 01/07/2016, à 06:05

pingouinux

Re : [Résolu] Changement dans interprétation regexp ?

Bonjour,
Pour compléter la réponse de bertrand0, et connaître le awk que tu utilises, tu peux donner le retour de

ls -l /usr/bin/*awk /etc/alternatives/*awk

La forme suivante est bien interprétée par gawk, mais pas par mawk :

ls ... | awk '/^[0-9]{8}-[0-9]{4}-Comp/ {print}'

Hors ligne

#4 Le 01/07/2016, à 11:46

Watael

Re : [Résolu] Changement dans interprétation regexp ?

salut,

find /media/Backup -type f -regextype posix-extended -regex '.*/[0-9]{8}-[0-9]{4}-Comp'

parser la sortie de ls peut être problématique; autant adopter les bonnes pratiques dès maintenant !


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 01/07/2016, à 13:32

Nym

Re : [Résolu] Changement dans interprétation regexp ?

Bonjour.

Je ne suis pas présentement devant mon PC, mais pour répondre à bertrand0 et pingouinux, c'est a priori mawk. Je n'y avais pas prêté attention, mais c'est effectivement sur la page de mawk que j'arrive quand je lance 'man awk'. Du coup pingouinux donne l'explication et une solution : installer gawk.
Par ailleurs je pense que je vais retenir la proposition de Watael pour améliorer ma ligne de commande.

Merci à tous les trois !


Nym
Ubuntu 18.04.1 LTS 64bits

Hors ligne

#6 Le 01/07/2016, à 13:33

Nym

Re : [Résolu] Changement dans interprétation regexp ?

gigiair a écrit :
Nym a écrit :

Bonjour.

J'utilise des répertoires de sauvegarde horodatés, sous la forme aaaammjj-hhmm-type où type donne le type de la sauvegarde sur 4 lettres (complète, incrémentale...).
Pour faire le tri dans ces répertoires et ne retenir que celui contenant la dernière sauvegarde complète, par exemple, je pensais utiliser le code suivant :

ls /media/Backup | awk '/^[0-9]{8}\-[0-9]{4}\-Comp/ {print $0}'

Eh bien ça ne fonctionne pas alors que

ls /media/Backup | awk '/^[0-9]+\-[0-9]+\-Comp/ {print $0}'

et

ls /media/Backup | awk '/^[0-9]+-[0-9]+-Comp/ {print $0}'

fonctionnent parfaitement.
J'ai cherché dans les pages man de awk et egrep, mais je ne comprends pas pourquoi mes spécifications avec accolades ne sont pas interprétées.
Quelqu'un aurait-il une explication ?

Si tu protège les accolades, ça ne change pas ?
Je dis ça comme ça, je n'utilise pas awk, mais dans les regexp, je progège toujours les accolades.

Je ne l'ai pas précisé, mais j'ai effectivement tenté de protéger les accolades avec \. C'est pareil.


Nym
Ubuntu 18.04.1 LTS 64bits

Hors ligne