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

Résolu/Fermé
zatox19 Messages postés 31 Date d'inscription samedi 24 septembre 2022 Statut Membre Dernière intervention 14 août 2024 - 13 août 2023 à 19:01
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 14 août 2023 à 15:54

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 40456 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 novembre 2024 9 418
Modifié le 13 août 2023 à 19:25

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 samedi 24 septembre 2022 Statut Membre Dernière intervention 14 août 2024 1
13 août 2023 à 19:31

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

0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié le 14 août 2023 à 10:21

hello

$ awk -F "-" '{print $1}' fichier
ib64x11
lib64ass
lib64boost
lib64avahi
0
jee pee Messages postés 40456 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 novembre 2024 9 418
Modifié le 14 août 2023 à 13:14

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 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621 > jee pee Messages postés 40456 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 novembre 2024
14 août 2023 à 13:26

oui
mon code est faux

$ awk -F "-devel" '{print $1}' fichier
ib64x11
lib64ass
lib64boost-static
lib64avahi-common
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
14 août 2023 à 13:00

en shell

$ while read a; do echo ${a%%-?*}; done < fichier
ib64x11
lib64ass
lib64boost
lib64avahi
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
14 août 2023 à 15:54

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 samedi 24 septembre 2022 Statut Membre Dernière intervention 14 août 2024 1
14 août 2023 à 14:06

Bonjour, merci à tous, tout foncyionne.

0