Découper chaîne de caractères en shell située devant chaîne

Résolu
zatox19 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour, j'ai un fichier qui contient des enregistrements de la forme suivante:

ib64x11-devel-1.7.0-1.4.mga
lib64ass-devel-0.15.1-1.mga
lib64boost-static-devel-1.75.0-1.mga
lib64avahi-common-devel-0.8-6.3.mga

pour chaque enregistrement je voudrais extraire tous les caractères situés devant la chaîne "-devel"  pour obtenir ceci:

lib64x11
lib64ass
lib64boost-static
lib64avahi-common

Comment faire en shell ? cut, sed, awk, tr  etc ...

Merci pour votre aide.
 

A voir également:

5 réponses

jee pee Messages postés 41510 Date d'inscription   Statut Modérateur Dernière intervention   9 715
 

Bonjour,

sed 's/-devel.*//' ficin.txt >ficout.txt

Même si sur le principe awk serait meilleur, mais il y a longtemps que j'ai oublié la syntaxe




0
zatox19 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   1
 

Bonjour, ah oui super merci jee pee c'est exactement ce que je voulais. Super

0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 

hello

$ awk -F "-" '{print $1}' fichier
ib64x11
lib64ass
lib64boost
lib64avahi
0
jee pee Messages postés 41510 Date d'inscription   Statut Modérateur Dernière intervention   9 715
 

merci, effectivement la syntaxe reste simple

le véritable séparateur étant "-devel", est-ce que

$ awk -F "-devel" '{print $1}' fichier

fonctionne ?

0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > jee pee Messages postés 41510 Date d'inscription   Statut Modérateur Dernière intervention  
 

oui
mon code est faux

$ awk -F "-devel" '{print $1}' fichier
ib64x11
lib64ass
lib64boost-static
lib64avahi-common
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 

en shell

$ while read a; do echo ${a%%-?*}; done < fichier
ib64x11
lib64ass
lib64boost
lib64avahi
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 

correction :

$ while read a; do echo ${a%%-devel?*}; done < fichier
ib64x11
lib64ass
lib64boost-static
lib64avahi-common
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zatox19 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   1
 

Bonjour, merci à tous, tout foncyionne.

0