Decoupe chaine de caractere sur une position défini [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015
-
Messages postés
35932
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
3 décembre 2020
-
Bonjour,

Dans le cadre d'un script j'ai en variable des nom de serveur sous la forme:

CAS A: aa-bb2211.uuuuu.uuuu
CAS B: bb2201.uuuuu.uuuu

Pour les 2 nom différent j'ai uniquement besoin de recupéré
bb22

j'ai 2 commande a base de cut pour chacun des cas A et B
Cas A je cut le - et ce qu'il y as devant, puis je cut sur le 1er 1 et je garde ce qu'il y as devant
resultat: bb22

Cas B je cut au 0 et je garde ce qu'il y as devant
resultat: bb22

Seulement de simplifier (normal :) ) et d'avoir une seule commande sachant que dans certains cas je peux avoir aa-bb1111.uuuuu.uuuu

si je retire le préfixe aa- je ne voudrai dans tt les cas que les 4 1er caractere (c'est la forme réguliere qui existe)

Comme ca peut importe les cas particulier je garderai tj que bb22

Merci :)

3 réponses

Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 112
hello
$ sed -r 's/^[^-]*-//; s/(.{4})(.*$)/\1/' fich
bb22
bb22
bb11
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
35932
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
3 décembre 2020
5 702
Salut,
Dans le cadre d'un script j'ai en variable des nom de serveur sous la forme
D'où mon exemple avec l'expansion des paramètres du shell.
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 112
on ne lit pas tout, c'est comme les condiions d'utilisation
$ var=aa-bb2211.uuuuu.uuuu
$ sed -r 's/^[^-]*-//; s/(.{4})(.*$)/\1/' <<<"$var"
bb22
$ var=bb2201.uuuuu.uuuu
$ sed -r 's/^[^-]*-//; s/(.{4})(.*$)/\1/' <<<"$var"
bb22
Messages postés
35932
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
3 décembre 2020
5 702 >
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020

Oui oui, je suis d'accord, c'était juste histoire de tout traiter avec le shell.

Sinon, tu connais ma passion pour sed, et du coup je ne vais pas bouder ta solution ;-))
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 112
je fus étonné d'une solution sed free
Messages postés
35932
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
3 décembre 2020
5 702
Salut,

$ cat fich 
aa-bb2211.uuuuu.uuuu
bb2201.uuuuu.uuuu
aa-bb1111.uuuuu.uuuu

$ while read line;do line=${line#*-};echo ${line::4};done < fich
bb22
bb22
bb11

Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015

Merci beaucoup ;)

il faut vraiment que je me penche sur sed, j'avais un peu look mais je n'arrivait pas a faire aussi bien :)
Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015

http://www.corporesano.org/doc-site/grepawksed.html ca va m'aider :) beaucoup de truc interessant :)
Messages postés
35932
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
3 décembre 2020
5 702 >
Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015

sed ;-))