#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
... 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:
... 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
... il faut directement passer par un fichier ...
pas forcement, tu pourrais modifier directement le texte dans le fichier
... 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)
-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