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@lists.parinux.org https://lists.parinux.org/listinfo/tech
tech mailing list tech@lists.parinux.org https://lists.parinux.org/listinfo/tech