Effectuer un backpace avec sed

Résolu/Fermé
matmat - 19 nov. 2010 à 15:03
 matmat - 19 nov. 2010 à 16:23
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
19 nov. 2010 à 15:32
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
19 nov. 2010 à 16:10
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
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
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