Effectuer un backpace avec sed

Résolu
matmat -  
 matmat -
Bonjour,

je souhaite faire un script qui remplace un mot "{back}" dans un fichier texte par un backspace, c'est a dire qui efface le charactere avant le mot "{back}", jimagine qu il faut utiliser sed mais je vois pas comment

merci :)

4 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

$ echo -e "bonjour" | sed 's/.$/^?/'
bonjou

Le "^?" s'obtient par la combinaison de touches "CTRL-V + Backspace".

;-))
1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
ta commande donne :
echo -e "bonjour" | sed 's/.$/^?/'
bonjou^?

As-tu bien généré la séquence "^?" par la combinaison de touches "CTRL-V + Backspace" et non en tapant directement ^? sur ton clavier ???

Sinon essaye avec le code hexadécimal (08) :

$ echo -e "bon{back}jour" | sed 's/{back}/\x08/'
bojour

$ echo -e "bon{back}jour" | sed 's/{back}/\x08/'| sed -n l
bon\bjour$
$
1
matmat
 
merci pour ta reponse rapide mais ca ne marche pas chez moi :/

le shell que j utilise est bash

ta commande donne :

echo -e "bonjour" | sed 's/.$/^?/'
bonjou^?

ce dont j ai besoin c est

echo -e "bon{BACK}jour" | sed 's/{BACK}/l_expr_que_je_cherche/'
bojour

merci quandd meme zipe :)
0
matmat
 
ooops :p j avais fais copier coller de ta ligne en fait,

en faisant la combinaison ca fonctionne, pareil pour le code hexa

decidement linux est vraiment surprenant


merci beaucoup zipe :)

(pour info, la combinaison de touche fonctionne directement dans le shell et pour un script tapé dans un editeur j ai utilise le code hexa)
0