Supprimer recursivement fin de ligne

Résolu
Poireau007 Messages postés 85 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour tout le monde !

J'ai un fichier qui comporte les lignes suivantes :

Produit: cartes - 12300
Produit: papier - 45600
Produit: encre - 65755

je cherche une fonction (sed ou awk) qui me permettrait de récupérer un fichier de type

cartes
papier
encre

j'arrive à supprimer le début de ligne avec sed car il est identique mais pour supprimer tout ce qui est après " - " c'est plus difficile ...
Merci pour votre aide !
Configuration: Ibook ^^

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    jp@MDK:~/tmpfs ssh$ cat plop
    Produit: cartes - 12300
    Produit: papier - 45600
    Produit: encre - 65755
    
    jp@MDK:~/tmpfs ssh$ sed -n 's/.*: \(.*\) -.*/\1/p' plop
    cartes
    papier
    encre
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    2
    1. Poireau007 Messages postés 85 Statut Membre 15
       
      Merci pour ta réponse :)
      Je ne suis pas très bon en expressions régulières et je voudrais comprendre la réponse si possible :))))


      pour : -n
      j'ai lu que ça permet de supprimer l'affichage automatique de l'espace de travail, mais ce n'est pas très clair...
      http://jp.barralis.com/linux-man/man1/sed.1.php

      pour : .*:
      ça c'est pour dire n'importe quelle chaine de caractères avant les ":" , c'est bien ça ?

      pour : \(.*\)
      pour ça, je ne comprend pas trop. j'ai lu que "\(" et "\)" permetent d'isoler des sous chaines. Cela permet d'isoler une expression dans une expression ? J'ai un peu de mal a conceptualiser la chose...

      pour : -.*
      Pareil que tout à l'heure, il s'agit de toute chaine de caractere

      pour : \1
      c'est pour récupérer la première sous chaine d'après ce que j'ai compris

      pour : p
      la je sais pas trop, je comprend la distinction entre p et g ... c'est pour lire ligne par ligne non ?

      Désolé pour toutes ces questions, c'est pour mieux comprendre !
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    Tu as quasiment tout bon ;-)

    Le "-n" c'est effectivement pour empêcher l'affichage systématique ou que sur demande avec le paramètre "p".
    Voir dans la FAQ de SED les 3 parties intitulées "Introduction à SED".

    Pour les sous-expressions voir plus précisément ;-)
    0