Forum Programmation.shell Transformation d'occurence de metacaractère

Posté par  .
Étiquettes : aucune
0
21
déc.
2005
Bonjour,

Je cherche a réaliser un script permettant de transformer tt les caractères "\n" en "\r\n" pour une compatibilité avec une machine a commande numérique.

par exemple en utilisant hexdump -c fic.txt je cherche a obtenir :

Source :

m e r c i a l i n u x f r . o r g \n

Resultat

m e r c i a l i n u x f r . o r g \r \n

J'ai essayé de nombreux scripts utilisant tr, grep et sed mais rien n'y fait, car le fait que mes occurences soit des métacaractères a l'air de poser problème.

Merci de votre aide
  • # format de passage à la ligne

    Posté par  (site web personnel) . Évalué à 2.

    Ce que tu décris, \r\n, est le format de retour à la ligne dit "dos", propre aux systèmes d'exploitation des chez Microsoft.

    L'utilitaire que tu cherches est unix2dos il me semble. Sur debian, c'est le paquet sysutils.

    Voir aussi cette astuce : http://linuxfr.org/tips/74.html
  • # fromdos / todos

    Posté par  (site web personnel) . Évalué à 3.

    tu peux utiliser l'utilitaire 'todos' qui convertit un fichier texte unix ver un fichier texte dos. sous debain, c'est dans le paquet sysutils.
    sinon, un sed:
    $ sed -i -e 's/\n/\r\n/g' monfichier.txt
    devrait le faire aussi.. (pas testé)

    Tout homme qui dirige, qui fait quelque chose, a contre lui ceux qui voudraient faire la même chose, ceux qui font précisément le contraire, et surtout la grande armée des gens d'autant plus sévères qu'ils ne font rien du tout. -- Jules Claretie

  • # Mandrake 10

    Posté par  . Évalué à 1.

    Merci pour la rapidité de la réponse,
    Le pb est que ma distrib mandrake 10.0 ne possède pas de unix2dos, j'ai testé le sed -i -e 's/\n/\r\n/g' monfic mais ca ne fonctionne pas non plus.
    Peut-etre faut il rajouter des '' ie : sed -i -e 's/'\n'/'\r\n'/g' ( testé mais fonctionne pas )
    ou des \\r \\n ?? (fonctionne pas non plus )

    Merci bcp
    • [^] # Re: Mandrake 10

      Posté par  . Évalué à 2.

      Je suis surpris que tu n'aies pas unix2dos sur mandrake 10.0, cet utilitaire existe depuis de nombreuses années. Le package s'appelle unix2dos.
      Que te dis urpmi unix2dos ?

      Sinon, tu peux ajouter les \r avec sed:
      sed 's/$/^M/' < fic.txt > fic2.txt
      J'ai testé, ça fonctionne.
      Pour saisir ^M, il faut taper CTRL-V puis CTRL-M
    • [^] # Re: Mandrake 10

      Posté par  (site web personnel) . Évalué à 2.

      En fait, sur internet, il existe des moteur de recherches. Ce sont des sites qui permettent de faire des recherches sur internet. L'un d'entre eux me donne, en premier résultat, une foule d'informations utiles si je cherche 'mandrake 10 unix2dos'. Avec l'information que j'y trouve, je m'aperçois qu'avec la simple ligne :
      $ perl -pi -e 's/\n/\r\n/g' test.txt, j'ai exactement ce que je veux il me semble.

      (désolé pour l'ironie, je n'ai pu m'empêcher, j'espère que tu vas résoudre ton problème)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.