SED

Résolu
Jules -  
 Jules -
Bonjour à tous,

J'avais un fichier avec un séparateur ";" dans lel conteru du fichier.

Mon but était très simple, supprimer tous les caractères derrière ce ";" (";" inclus à cette suppression)

L'utilisation de la fonction awk en précisant le ";" comme délimiteur m'a suffit, par contre en passant par la fonction sed, je n'arrive pas à atteindre le même but ... je sais je sais, pourquoi se poser la question si j'ai déjà la solution ... par curiosité d'esprit ...

exemple :
Prenons mon fichier toto

$cat toto
a_garder ; a supprimer
a_garder ; a la poubelle
a_garder aussi ;

ma commande ci-dessous donne :
$ sed '/;$/d' toto
a_garder ; a supprimer
a_garder ; a la poubelle

par contre comme exprimer sous sed tous les caractères entre ";" et fin de ligne ('/;*$/d' ne fonctionne pas évidemment, ça aurait été trop facile ...)

En espérant avoir été clair dans ma demande ....

Merci d'avance pour vos réponses ou début de solution, je vais continuer de fouiller dans l'introduction à SED rédigé par jipicy.

2 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
sed 's/;.*$//' toto :)
ie: remplacer (s => substitute) ";<nimporte quels caractères jusqu'à la fin de ligne>" par rien.

La commande sed '/;$/d' toto sert a supprimer du fichier toto les lignes dont le dernier caractère est ';', et la commande sed '/;*$/d' toto sert a supprimer du fichier toto toutes les lignes terminant par 0, 1 ou n ';' (donc toutes les lignes)
0
Jules
 
Merci beaucoup, j'avais essayé la substitution sans succès mais il me manquait le "." devant "*"
Ca parait simple avec la réponse ...

En tout cas merci d'avoir pris le temps de poster la réponse.
0