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

Résolu
zatox19 Messages postés 31 Statut Membre -  
dubcek Messages postés 18627 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.
 

5 réponses

  1. jee pee Messages postés 9450 Date d'inscription   Statut Modérateur Dernière intervention   9 994
     

    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
  2. zatox19 Messages postés 31 Statut Membre 1
     

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

    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     

    hello

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

      merci, effectivement la syntaxe reste simple

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

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

      fonctionne ?

      0
      1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660 > jee pee Messages postés 9450 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
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     

    en shell

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

      correction :

      $ while read a; do echo ${a%%-devel?*}; done < fichier
      ib64x11
      lib64ass
      lib64boost-static
      lib64avahi-common
      
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zatox19 Messages postés 31 Statut Membre 1
     

    Bonjour, merci à tous, tout foncyionne.

    0