Remplacement exacte ou avec blanc ou tab

cyo17 -  
 cyo17 -
Bonjour,

j'ai un probleme pour faire un remplacement sur une chaine qui peut varier
je represente l'espace par un _ dans mon exemple
je représente la tabulation par _tab
mon fichier test:
toto
toto_
toto__
toto_tab
toto1
toto2

le but est de modifier tous les toto (en fin de ligne, ou avec un ou des espaces ou tabulation) par titi sans toucher au toto1 et toto2

j'aurais à la fin
titi
titi
titi
titi
toto1
toto2

j'ai réussi à faire un grep de ce que je cherche comme ça : grep -E "toto$"\|"toto[^A-Z1-9]" test
mais je n'arrive pas à passer en sed s
j'ai aussi tenté de faire un truc trouver sur un forum: egrep "toto[ \t\n]" test
mais le \t et \n n'attrappe ni la tabulation ni la fin de ligne (c'été pourtant prometteur)

merci d'avance
A voir également:

3 réponses

dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
hello
sed 's/[ \t]*$//'

http://www.commentcamarche.net/faq/sujet 6699 sed trucs et astuces
ah j'ai mal lu la question
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,
[tmpfs]$ cat -A fichier   # Affiche les caractères non-imprimables
toto$
toto $
toto  $
toto^I$
toto1$
toto2$

[tmpfs]$ sed '/toto\($\|\s\+\)/ s/o/i/g' fichier
titi
titi
titi
titi
toto1
toto2

[tmpfs]$
;-))
0
cyo17
 
salut jipicy,
ta commande ne fonctionne pas chez moi : ce peut-il que cela soit un probleme de version de sed (je regarde ça comment)
en fait meme la commande de dubcek sed 's/[ \t]*$//' ne fonctionne pas chez moi : tout ce qui touche la tabulation ne fonctionne pas

sed '/toto\($\)/ s/o/i/g' test fonctionne
sed '/toto\( \)/ s/o/i/g' test fonctionne

sed '/toto\(\t\)/ s/o/i/g' test ne fonctionne pas

pareil avec le OU: sed '/toto\($\| \)/ s/o/i/g' test ne marche pas

sinon ton \s\+ c'est quoi ??
merci
0