Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

Bonjour,

voilà mon problème:

Dans un fichier, j'ai des lignes contenant le caractère "£".
Et je veux remplacer ce caractère par un retour chariot (à priori, "\n" donc).

j'ai voulu utiliser la commande sed comme cela:
sed 's/£/\n/g' fichier_entree > fichier_sortie

Je me retrouve avec des "n" simples à la place du caractère d'origine "£" et au lieu du "\n" attendu.

Si j'essaie de protéger le "\n" dans ma ligne de commande, forcément, je me retrouve avec le caractère "\" et le caractère "n" à la place du "£" mais, bien entendu, ils ne sont pas interprétés comme des retours chariots.

Quelqu'un peut-il m'aider ?
Un grand merci d'avance.

Poste le Monday 28 February 2005 16:55:34
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: ceric35

je vient de tester , ca marche tres bien

-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Monday 28 February 2005 17:10:00
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

Pour moi, ça n'est pas tombé en marche :~(.

Est-ce que cela peut être dû au fait que je me trouve sous Unix et non sous Linux ?

Poste le Monday 28 February 2005 17:14:05
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: ceric35

[/home/eric]>sed --version
GNU sed version 4.1.2
Copyright (C) 2003 Free Software Foundation, Inc.
Ce logiciel est libre; voir les sources pour les conditions de reproduction.
AUCUNE garantie n'est donnée; y compris pour des RAISONS COMMERCIALES ou
pour RÉPONDRE A UN BESOIN PARTICULIER, à l'étendue permise par la loi.

Possible , je sais que le probleme existe sur les pc HP aussi ...

-------------------------------------------------------------------------------------------------
Linux est pour la firme de Redmond ce qu'est James Bond pour les
méchants dans les films : le dernier obstacle avant la domination mondiale.

Poste le Monday 28 February 2005 17:29:57
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

J'ai trouvé une solution:

sed 's/£/<CTRL>+<V>Entrée/g' fichier_entrée >fichier_sortie

Et là ça passe.

En tous cas, merci de m'avoir rassuré, j'étais presque sûr que ma première solution marchait sous Linux.


Poste le Monday 28 February 2005 17:35:56
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: Eric92

Ca dépend peut-être plutôt du shell (ksh ou bash) que du système.

Une solution sous ksh, avec une vraie fin de ligne entre les ' ' :
sed 's/£/
/g' fichier_entree > fichier_sortie

Poste le Tuesday 1 March 2005 02:32:02
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

Sous vi, la commande :%s/£/<CTRL>+<V>Entrée/g fonctionne bien.
Dès que je fais un appel à sed dans un shell pour effectuer le traitement, ça ne marche plus.
Je suis en train de m'arracher les cheveux pour essayer de trouver une solution...

Poste le Tuesday 1 March 2005 11:37:09
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

L'idée de mettre une entrée dans la chaîne de commande sed est bonne mais ne marche pas. Cela m'indique que l'expression ne peut pas être parsée.

Poste le Tuesday 1 March 2005 11:51:26
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: Jonesy's

Bonjour,

Quel shell ? Quel Unix ?

@+

--- Marchons seul, sans faire le mal, sans rien attendre, tel l'éléphant qui traverse la forêt. ---

Poste le Tuesday 1 March 2005 11:59:36
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

Bonjour,

shell ksh et unix sur machine DEC.
uname -a : OSF1 serveurDEC V4.0 1229 alpha

Poste le Tuesday 1 March 2005 12:05:27
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: marc ferraton

cat tonfichier | awk 'BEGIN { RS="£" } { print }`

Poste le Tuesday 1 March 2005 13:30:55
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot
Envoyé par: cancerus

Oui, ça marche aussi.

J'ai également trouvé une autre solution:
cat fichier_entrée | tr '£' '\n' >fichier_sortie

Merci à tout le monde. Vous êtes des chefs @:-)

Poste le Tuesday 1 March 2005 14:44:11
Répondre     Citer    
Re: Substitution d'un caractère par un retour chariot (cas sed)
Envoyé par: Eric92

Sans critiquer les autres solutions :
dans la mienne il manquait un "\", c'est donc :
sed 's/£/\
/g' fichier_entree > fichier_sortie

Poste le Wednesday 2 March 2005 21:16:21
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Substitution d'un caractère par un retour chariot
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons