Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/08/2013, à 17:25

neokal

[RESOLU] un truc simple qui m'échappe sur les retour chariot

Bonjour à tous,
voila je traite un fichier texte ou j'aimerais remplacer tous les charactéres espace '5' par un retour à la ligne du genre '\n'
j'ai essayer via la fonction tr et sed mais rien n'y fait, mais 5 disparaisse bien mais aucun retour chariot n'est la quand j'ouvre mon fichier texte, seulement des espaces
un éclaircissement serait le bienvenu

Dernière modification par neokal (Le 19/08/2013, à 14:21)


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#2 Le 16/08/2013, à 17:49

Ayral

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

Dans libre office, la fonction rechercher 5 remplacer par \n expressions régulières coché, ça fonctionne; sur un fichier texte banal je sais pas. Dans gedit aussi. Je viens de tester.


Pour mettre les retours de commande entre deux balises code, les explications sont là : https://forum.ubuntu-fr.org/viewtopic.php?id=1614731
Blog d'un retraité
Site de graphisme du fiston Loïc
Ubuntu 22.04 LTS sur un Thinkpad W540

Hors ligne

#3 Le 16/08/2013, à 17:51

MicP

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

neokal a écrit :

... j'ai essayer via la fonction tr et sed  ...

Très bien, mais pourrais-tu nous transmettre les lignes de commandes que tu as utilisé pour ça,
par la même occasion, une ligne ou deux significatives du texte source et du texte que tu voudrais obtenir.

Ça nous aiderais beaucoup pour pouvoir t'indiquer pourquoi ça n'a pas marché,
Sinon, il va falloir qu'on écrive un bouquin entier pour citer toutes les erreurs possibles de syntaxe et en plus, il y a de fortes chances que ton erreur n'y soit pas,
Au final, on aura passé des mois à rédiger un truc, tu aura passé des mois à le lire, et rien ne sera résolu.

Désolé, mais on m'a piqué ma boule de cristal. Si je tenais le salaud qui...

Merci.

Dernière modification par MicP (Le 16/08/2013, à 17:51)

Hors ligne

#4 Le 16/08/2013, à 18:00

neokal

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

merci ayral mais je souhaite le faire via script sh
pour les exemples j'avais penser à les poser mais j'ai complétement zapé ))

$valeur= $(grep 'toto' $file | tr '5' '\n')

et

$valeur=$(grep 'toto' $file | sed -re 'y/5/\n/')

dans le second exemple j'ai pas la moindre idée du 'y' j'ai pris un exemple sur le net, j'ai essayer avec plusieur déclinaison trouvé ça et la et le résultat est toujours le meme, cette fonction est un peu trop baléze pour moi je pense, j'essai de faire quelque chose de simple et je n'y parvient pas
je commence a desesperer d'y arriver )


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#5 Le 16/08/2013, à 18:06

MicP

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

manque:

MicP a écrit :

... une ligne ou deux significatives du texte source et du texte que tu voudrais obtenir. ...

ou mieux:
un exemple de fichier source représentatif,
et un exemple de fichier modifié

Dernière modification par MicP (Le 16/08/2013, à 18:09)

Hors ligne

#6 Le 16/08/2013, à 18:22

neokal

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

le fichier nomé /tmp/test contient

alphonse5bob5maurice5dédé
toto5titi5tata
rémond5margo5grimbergen

le script test.sh est

#!/bin/bash
file='tmp/test'
file2='final/test'
valeur=$(grep 'toto' $file | sed -re 'y/5/\n/')     # sinon je remplace sed -re 'y/5/\n/' par tr '5' '\n' , meme résultat
echo $valeur >> $file2
exit 0

mon fichier final/test est

toto titi tata

Mes 5 sont devenu un espace est non pas un retour chariot
Je comprend vraiment pas ????

Dernière modification par neokal (Le 16/08/2013, à 18:22)


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#7 Le 16/08/2013, à 18:25

pingouinux

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

Bonjour,

sed -n '/toto/s/5/\n/gp' "$file1" >"$file2"

Correction

Dernière modification par pingouinux (Le 16/08/2013, à 18:27)

Hors ligne

#8 Le 16/08/2013, à 18:27

MicP

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

Tu voudrais avoir un fichier résultant dont le contenu serait:

alphonse
bob
maurice
dédé
toto
titi
tata
rémond
margo
grimbergen

C'est bien ce que tu voudrais avoir  comme résultat ?

Si oui:

cat file1 | sed 's/5/\n/g' >file2

voir ce lien pour sed
Et bien sûr:

man sed

Dernière modification par MicP (Le 16/08/2013, à 18:37)

Hors ligne

#9 Le 16/08/2013, à 18:33

neokal

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

effectivement en tapant

sed 's/5/\n/g' "$file" >"$file2"

j'ai bien tous les retour chariot voulu ) manque plus qu'a isolerla bonne ligne via grep
je pense mon erreur a été de vouloir passer par une variable $valeur (qui a mon avis ne peux pas contenir de retour chariot), il faut directement passer par un fichier, je pensais meme pas que l'on pouvait avec la fonction sed
cette fonction et trés puissante et je rechigne a l'utiliser car je suis trés rapidement dans le flou le plus complet,
par exemple est il possible de savoir a quoi corresponde le s et le g en début et fin de paramétre pour sed?
(j'ai enlever toto car cela ne faisait que appliquer le retour chariot à la ligne contenant toto)
merci pingouinux


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#10 Le 16/08/2013, à 18:38

MicP

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

s => search
g => global

neokal a écrit :

... il faut directement passer par un fichier ...

pas forcement, tu pourrais modifier directement le texte dans le fichier

neokal a écrit :

... j'ai enlever toto car cela ne faisait que appliquer le retour chariot à la ligne contenant toto ...

C'est pour ça qu'on demande de bien définir le problème avant de proposer une solution qui forcément ne conviendra pas...

pingouinux a parfaitement répondu à ton post, (et il est bien plus "pro" que moi en script)
mais ta ligne de commande est meilleure que la mienne (qui utilisait "cat" et un "pipe" en trop)

man sed a écrit :

-i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if extension supplied)

Une solution pour modifier le fichier sans en créer un autre, avec même une option pour faire un ".back" de l'original,
histoire de le sauvegarder, au cas où.

Donc:

sed -i".back" 's/5/\n/g' "file1"

Dernière modification par MicP (Le 16/08/2013, à 19:37)

Hors ligne

#11 Le 16/08/2013, à 18:42

neokal

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

Merci pour toutes ces explications rapides et claires, je nageais un peu dans toutes la docs.
Maintenant au moins c'est claire pour moi meme si j'ai l'impression que cette fonction va me donner du fil à retordre.
Vraiment un grand merci


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#12 Le 20/08/2013, à 16:04

neokal

Re : [RESOLU] un truc simple qui m'échappe sur les retour chariot

Pour ceux que ça peut dépanner, la plupart n'était pas lier à une mauvaise commande mais surtout du fait que le retour chariot n'était pas /n mais plutot /r
Donc du coup la plupart de mes commandes n'étaient pas prisent en compte,
Quoi qu'il en soit merci encore pour le dépannage )


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne