Rechercher : dans
Par :

Supprimer recursivement fin de ligne

Dernière réponse le 14 mai 2009 à 12:14:00 Poireau007, le 14 mai 2009 à 11:28:40 
 Signaler ce message aux modérateurs

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 ^^

Meilleures réponses pour « Supprimer recursivement fin de ligne » dans :
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
[Logiciels] Désinstaller/Supprimer Windows Messenger VoirNote Suppression Suppression de Windows Messenger en ligne de commande Suppression de Windows Messenger par le panneau de configuration Note Windows Messenger est une version "allégée" de son grand frère, MSN Messenger. Elle peut...
Sed - Trucs et astuces VoirSubstitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...

1

jipicy, le 14 mai 2009 à 11:34:26
  • +1

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$
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

Poireau007, le 14 mai 2009 à 12:02:40

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 !

Répondre à Poireau007

3

 jipicy, le 14 mai 2009 à 12:14:00

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 ;-)
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy