[px:tech] Regex
Patrick Pouget
forums.info at patrick.pouget.name
Sam 18 Mar 12:33:03 CET 2023
Bonjour
J'ai voulu faire ma 2eme regex pensant que celle là est plus simple
(pas d'insertion de ligne, on remplace) mais ça merde
ça ne subtitue pas ce que ça devrait et le g pour que ça ne s'arrête
pas à la première est ignoré (il y en a souvant plusieurs par ligne)
bla bla sed -re 's/\sX([0-9]*)_[1-8]-([1-9]*)\s/\sU([0-9]*)-[1-9]*\s/g'
Le but est
* chercher les champs commençant par X ( \sX ), ayant un nombre
quelconque ( [0-9]* ) quelconque, suivit de _ ( \ ), suivi d'un seul
chiffre ( [1-8] ), suivi de - ( - ), suivis d'un nombre, suivis d'un
séparateur avant le prochain champs ( \s )
* remplacer l'X par U, supprimer _, supprimer le chiffre avant le -
Le chiffres et nombres ne sont pas des restrictions strictes au sens
regex. Je ne recevrait jamais de fichier avec le chiffre à 0 ou plus
grand que 8 (et encore...). Le dernier nombre est toujours au moins 1
et jamais plus grand que 40 (et encore ...) donc [1-9]* c'est bon.
En option il y aurait _ <chiffre> optionels donc le travail se limite à
remplacer X par U. Je peux m'en passer
Merci
Patrick
On Thu, 2023-03-16 at 21:24 +0100, Vincent-Xavier Jumel wrote:
> Bonsoir,
>
> Je pense que l'exemple suivant répond à ta question :
>
> echo "D1 1 2 D1N4148" | sed -re '/^D[0-9]*\s([A-Z0-9])\s([A-Z0-
> 9]).*$/p;
> s/^D([0-9]*)\s([A-Z0-9])\s([A-Z0-9]).*$/R10\1 \2 \3 20meg/'
>
> Le 16.03.2023 18:40, Patrick Pouget a écrit :
> > Bonjour
> >
> > J'aurais un besoin d'une expression régulière pour:
> >
> > détecter la ligne commencçant par (par exemple) D1
> > prendre les 2 champs suivants
> > ignorer le reste
> > fabriquer une nouvelle ligne, en plus, reprenant les champs 2 et 3
> >
> > D1 1 2 D1N4148
> > ==>
> > R101 1 2 20meg
> >
> > La nouvelle ligne peut être avant ou après celle qui a déclenché le
> > regex
> > Cette modification n'intervient qu'une fois car D1 est unique
> > La nouvelle ligne peut même être placée n'importe ou en respectant
> > certaines conditions, mais peut toujours être juste avant ou après.
> >
> > Il me faudra faire plusieurs regex par exemple avec D1 D5 et D12,
> > je
> > mettrai les sed à la suite
> >
> > Le must serait d'avoir un truc qui prenne les 3 examples, par
> > contre il
> > me faut l'unicité sur R. ça peut être R101 R105 et R1012
> >
> > Merci
> >
> > Cordialement
> >
> > Patrick
> >
> >
> >
> >
> > _______________________________________________
> > tech mailing list
> > tech at lists.parinux.org
> > https://lists.parinux.org/listinfo/tech
>
> _______________________________________________
> tech mailing list
> tech at lists.parinux.org
> https://lists.parinux.org/listinfo/tech
Plus d'informations sur la liste de diffusion tech