#26 Le 11/04/2009, à 18:46
- AnsuzPeorth
Re : Lignes modifiées par une recherche/remplacement et tri
Bjr,
Je ne sais pas si une commande spéciale existe ?
Sinon, pour grep, à compléter
egrep "(à|é|è|ù)"
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#27 Le 11/04/2009, à 20:53
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Mais, en fait, je suis un gros boulet.... je vous explique, la honte... je voulais grepper dans un .odt et je me demandais pourquoi il répondait rien
Désolé... *se pend*
Pour info, je cherchais le terme Berégost (une erreur dans le texte) et en tapant grep 'Berégost' ça fonctionne très bien
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#28 Le 13/04/2009, à 13:42
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Purée, encore un problème
J'ai des lignes du genre :
@16809 = ~Merci de votre aide.
~
Problème : quand je les recherche pour les remplacer par ce qu'il faut (ici il n'y a pas de faute mais c'est un exemple ), il ne me sort pas la balise ~ en fin de ligne, puisqu'elle est reportée sur la ligne suivante (qui compte donc pour une nouvelle ligne).
J'ai essayé de remplacer les '~ ' par '~' mais ça ne fonctionne pas avec un retour à la ligne
Est-ce qu'il y a moyen d'indiquer un retour à la ligne avec cette commande ?
cat dialog\ TotSC\ Fr.tra | sed s/"~ "/"~"/g > ./test
Via nano ça me va aussi tout aussi bien...
Encore merci !
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#29 Le 13/04/2009, à 14:29
- tshirtman
Re : Lignes modifiées par une recherche/remplacement et tri
c'est cat dialog\ TotSC\ Fr.tra | sed s/"\n~"/"~"/g > ./test
que tu veux non?
Hors ligne
#30 Le 13/04/2009, à 15:25
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Ben, je ne sais pas trop... le "n~" veut dire de trouver tout ce qui a un retour à la ligne suivi d'un ~ ? Si c'est ça, c'est bien ce que je souhaite retrouver ...
Désolé encore pour mon manque de connaissance, mais quand je consulte le manuel, c'est plutôt opaque pour moi dans la mesure où la plupart des termes un peu spécifiques me sont inconnus...
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#31 Le 13/04/2009, à 16:53
- tshirtman
Re : Lignes modifiées par une recherche/remplacement et tri
oui c'est ça, mais en fait sed ne peut pas faire ça, il bosse ligne par ligne... dans vim ça marche mais pas dans sed.
vim dialog\ TotSC\ Fr.tra
:%s/\n~/~/
:save test
:q
ou même
vim dialog\ TotSC\ Fr.tra +":%s/\n\~/\~/" +":x test"
Hors ligne
#32 Le 15/04/2009, à 21:23
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
OK, j'essaierai en rentrant chez moi, je te tiens au courant, merci
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#33 Le 24/04/2009, à 20:24
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Trois plombes plus tard (j'ai eu des imprévus, désolé), j'ai pu faire le test et ça fonctionne très bien. Reste juste à indiquer :q! plutôt que :q car sinon ça ne force pas l'écriture, ce qui apparemment est nécessaire...
Encore merci, Poloman
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#34 Le 26/04/2009, à 17:17
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Fallait bien que j'aie encore une question, sinon c'est pas drôle...
Peut-on isoler une partie des lignes d'un fichier pour ajouter dans un autre ?
J'ai des lignes du genre :
@123456=~Blabla~
@123789=~Autre blabla~
Je dois remettre les @123456 et @123789 dans un autre fichier afin de remplacer les lignes originales par celles-ci. Et comme je suis feignant (et que j'ai une centaine de pages quand même...), je me demandais si je pouvais grepper une partie de ligne seulement...
Mais grep risque de me rendre toute la ligne, je me trompe ?
Encore merci d'avance.. un bisou à celui/celle qui me sortira de cette "impasse"
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#35 Le 26/04/2009, à 18:12
- AnsuzPeorth
Re : Lignes modifiées par une recherche/remplacement et tri
Bjr,
Si j'ai bien compris, tu veux, partant de ton fichier source, trouver la correspondance (@123456) dans un autre fichier, et remplacer cette ligne par la ligne source ?
source.txt
@123456=~Blabla~
@123789=~Autre blabla~
fichier.txt
@123456=~item a remplacer~
@123789=~item a remplacer~
@1234
@12378
#! /bin/bash
while read ligne
do
sed -i "s/^$(cut -d "=" -f1 <<< $ligne).*$/$ligne/" ./fichier.txt
done < ./source.txt
exit
Enleve l'option -i de sed pour juste afficher le resultat dans la console (vérification)
Comme tjrs, cela peut etre amélioré ou fait différemment, c'est du vite fait (une commande awk ou une sed bien torcher pourrait eviter la boucle, mais c'est pas pour la NASA non plus, donc si ca prends 2 secondes de +)
ps: je veux pas du bisou ..dsl
Dernière modification par AnsuzPeorth (Le 26/04/2009, à 18:15)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#36 Le 26/04/2009, à 19:06
- tshirtman
Re : Lignes modifiées par une recherche/remplacement et tri
Mornagest: je pense que là, ça commence à se justifier que tu apprene les expressions rationelles... (regex) ça te rendra service, que tu les utilise avec sed ou avec vim, sinon tu peut apprendre awk, que je n'ai jamais pris le temps d'apprendre, mais qui semble faire le bonheur de nombreuses personnes traitant des fichiers... par ce que là tu reste très dépendant de nous quand même , d'autant que je ne suis pas sur d'avoir bien compris ce que tu voulais (et je ne peut pas être sur que AnsuzPeorth ait bien compris non plus). ^^
Donc je te conseil de prendre un cours sur sed (et dans ce cas cut et les autres autilitairs du genre) ou awk, qui font le boulot, à condition de savoir s'en servir .
ouais, c'est un RTFM ou un STFW dit gentilement je sais .
ps: oh y'a aussi apprendre python et le module "re"
Hors ligne
#37 Le 26/04/2009, à 23:15
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Salut
Je lirai demain, il est tard et j'ai plus toute ma concentration.
Faut voir, si j'ai besoin d'apprendre un truc ou pas. A priori, non, d'autres l'ont déjà fait avant moi et ils ne connaissent pas spécialement de langage, il me semble... je verrai.
Merci pour vos réponses quoi qu'il en soit
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#38 Le 27/04/2009, à 00:56
- tshirtman
Re : Lignes modifiées par une recherche/remplacement et tri
Y'a des gens qui font le truc à la mains aussi, ça demande aucune compétence...
Hors ligne
#39 Le 27/04/2009, à 08:02
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Bon, j'explicite un peu. Désolé, je venais de me farcir quatre heures de Writer avec corrections de fôte d'ortaugrafe et j'avoue que c'était au delà des capacités de mon neurone
J'ai un fichier qui contient environ 74.000 lignes de texte, qui concernent tout le jeu. Certaines contiennent des fautes de syntaxe, de ponctuation (voir plus haut ), etc. Le but est de proposer une correction sans remplacer tout le fichier (qui pèse environ 10 Mio une fois mis dans le format lisible par le jeu).
Les lignes de ce fichier sont numérotées de @1 à @74.000 sans interruption.
J'ai donc un deuxième fichier qui ne contient que les lignes à corriger (et donc bien plus léger, heureusement ). Les lignes de ce fichier-ci sont numérotées de @1000000 à @1074000 avec interruptions puisque toutes les lignes ne sont pas à corriger.
Il me faut cependant un troisième fichier, qui indique au logiciel de modding qu'il faut remplacer la ligne originale @184 par exemple par sa correction @1000184. Ceci tient en une petite phrase
STRING_SET ~184~ @1000184
(l'absence du @ est volontaire) Et ce, pour chaque ligne que je dois changer (j'ai environ 120 pages de lignes pour l'instant et ce n'est pas fini).
Est-ce que c'est moins confus ?
Dernière modification par Mornagest (Le 27/04/2009, à 08:04)
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#40 Le 27/04/2009, à 14:06
- AnsuzPeorth
Re : Lignes modifiées par une recherche/remplacement et tri
(et je ne peut pas être sur que AnsuzPeorth ait bien compris non plus). ^^
J'étais pas loin finalement disons que j'effectuais le boulot du logiciel de moding (presque, il aurait fallut juste modif un peu)
Donc je te conseil de prendre un cours sur sed (et dans ce cas cut et les autres autilitairs du genre) ou awk, qui font le boulot, à condition de savoir s'en servir .
+1
Mais si il ne veut pas apprendre, tant pis pour lui
@Mornagest
C'est maintenant un peu plus clair effectivement.
Je te propose, vite fait, tjrs en passant par une boucle (possible avec awk ou sed en ligne, mais c'est plus simple via une boucle, si tu veux l'éviter, ben faudra apprendre un peu à se servir de sed ou awk)
#! /bin/bash
while read ligne
do
#j'enleve le @10*, l'echappement du = n'est pas obligatoire, mais par sécurité....
nb=$(sed "s/^@10*\(.*\)\=.*$/\1/" <<< $ligne)
#je recup le num @1074.. cut aurait pu etre utilisé
nb2=$(sed "s/\(^.*\)\=.*$/\1/" <<< $ligne)
echo "STRING_SET ~$nb~ $nb2" > ./fichier3.txt
done < ./fichier2.txt
exit
J'insiste sur le fait que c'est largement améliorable, c'est la premier jet dirons nous, vite fait
Dernière modification par AnsuzPeorth (Le 27/04/2009, à 14:10)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#41 Le 27/04/2009, à 17:19
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
OK, je verrai. Faut m'excuser, je suis très paresseux et j'y connais vraiment rien en langage informatique (je sais même pas les différencier...).
Si ça marche pas, je m'y mettrai, promis
Merci encore, les gars
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#42 Le 11/05/2009, à 11:58
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
J'ai un peu lu de la doc, et je tente de décomposer la commande de AnsuzPeorth... vous me dites si c'est bon ?
#! /bin/bash
while read ligne
do
Quand il trouve une ligne, faire ce qui suit. Je me pose juste la question, le "ligne", c'est un exemple d'expression à trouver, ou c'est réellement l'argument de la commande ?
nb=$(sed "s/^@10*\(.*\)\=.*$/\1/" <<< $ligne)
Le nb signifie probablement "nombre" mais je n'ai pas pu trouver d'infos là-dessus... =$ donne la fin de la ligne à trouver qui se termine par un =
s/^@10*\(.*\)\= remplace tout ce qui commence par @10 avec une répétition possible de 0 et/ou autres caractères, même chose après le = des fois qu'il y aurait quelque chose entre le = et la fin de la chaîne à trouver... par contre, le /\1/ m'échappe, je l'avoue remplacer le @10 par 1 ? ou c'est plus précis que ça ?
nb2=$(sed "s/\(^.*\)\=.*$/\1/" <<< $ligne)
Là, il trouve tout ce qui contient des caractères, en gros, et le remplace par 1. Là aussi, je sèche...
echo "STRING_SET ~$nb~ $nb2" > ./fichier3.txt
done < ./fichier2.txt
exit
Là, on copie simplement le résultat dans le fichier3.txt
Bref, je suis pas encore au point
Merci pour vos éclaircissement !
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#43 Le 11/05/2009, à 13:00
- AnsuzPeorth_out
Re : Lignes modifiées par une recherche/remplacement et tri
J'ai un peu lu de la doc, et je tente de décomposer la commande de AnsuzPeorth... vous me dites si c'est bon ?
#! /bin/bash
while read ligne
doQuand il trouve une ligne, faire ce qui suit. Je me pose juste la question, le "ligne", c'est un exemple d'expression à trouver, ou c'est réellement l'argument de la commande ?
A chaque ligne trouvée, on la charge dans la variable 'ligne', tu peux donner un nom de variable comme tu veux, while red truc, while read machin.
nb=$(sed "s/^@10*\(.*\)\=.*$/\1/" <<< $ligne)
Le nb signifie probablement "nombre" mais je n'ai pas pu trouver d'infos là-dessus... =$ donne la fin de la ligne à trouver qui se termine par un =
nb= nomme une variable, peut importe le nom encore une fois
nb=$(echo truc | cut ...) on attribut le resultat de la commande à la variable nb
s/^@10*\(.*\)\= remplace tout ce qui commence par @10 avec une répétition possible de 0 et/ou autres caractères, même chose après le = des fois qu'il y aurait quelque chose entre le = et la fin de la chaîne à trouver... par contre, le /\1/ m'échappe, je l'avoue remplacer le @10 par 1 ? ou c'est plus précis que ça ?
^ debut de ligne
* repetition du caractere precedent
\( .*\) n'importe quel caractere '.*' . Il est entouré de ( protegé . Ce qui se trouve dans ces parentheses est rapeller par \1
Donc, tout ce qui se trouve entre @10* et le = sera le resultat de la commande.
nb2=$(sed "s/\(^.*\)\=.*$/\1/" <<< $ligne)
Là, il trouve tout ce qui contient des caractères, en gros, et le remplace par 1. Là aussi, je sèche...
Il recupere tout se qui se trouve avant le = et le sort via \1
Bref, je suis pas encore au point
Tu n'es pas encore au point car je pense que tu veux mettre la charrue avant les boeufs, commence par les bases du bash, ensuite interesse toi a sed, une chose a la fois.
Regarde dans ma signature des posts precedents, abs.traduc, lis toi cette doc ensuite ca ira mieux ! (ne prends pas peur, ca se lit vite)
#44 Le 11/05/2009, à 21:04
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
OK, je vais potasser ça un peu et je verrai merci pour ta patience !
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#45 Le 15/05/2009, à 09:05
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
#! /bin/bash
while read ligne
do
nb=$(sed "s/^@10*\(.*\)\=.*$/\1/" "$Patch.txt" << $ligne)
nb2=$(sed "s/\(^.*\)\=.*$/\1/" << $ligne)
echo "STRING_SET ~$nb~ $nb2" <"$fichier.txt"
done <"$fichier2.txt"
exit
Quand je l'exécute, il me sort :
script: 8: Syntax error: end of file unexpected (expecting "done")
Avec Kate, je vois bien qu'il n'y a pas de fin après do, mais j'ignore pourquoi... j'ai pas trouvé d'explication à cela
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne
#46 Le 15/05/2009, à 13:29
- AnsuzPeorth
Re : Lignes modifiées par une recherche/remplacement et tri
Bjr,
As tu vraiment potassé ???? J'ai des doutes !
Je ne veux pas t'envoyer paître, mais bon, là y a du mal
Regarde simplement ce que tu propose et ce que je propose, tu verras dèjà pas mal d'erreurs.
Seul l'assignation de la variable nb2 est correcte !
C'est du bash hein ! $fichier.txt par exemple !!!!
Problème aussi avec sed !
Enfin, potasse encore un peu, je pense que tu en as besoin !
Avec mes exemples tu devrais réussir facilement.
Pour le bash:
http://abs.traduc.org/abs-5.3-fr/index.html
Pour sed:
http://www.commentcamarche.net/faq/suje … sed-part-i
Dernière modification par AnsuzPeorth (Le 15/05/2009, à 13:31)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#47 Le 15/05/2009, à 14:25
- Mornagest
Re : Lignes modifiées par une recherche/remplacement et tri
Ben... oui mais je suis nulle part, en informatique. Vraiment nulle part. Du coup, parler de variable, c'est déjà compliqué pour moi (sans rire). Alors, la doc que tu m'as passé est sans doute complète, mais aussi complexe.
N'oubliez pas de consulter la documentation pour vous donner un coup de main !
Merci de modifier le premier message de votre sujet pour ajouter [Résolu] lorsque votre problème l'est :)
Xubuntu 20.04 sur deux ordinateurs, zéro souci. Passez à Xubuntu ;)
Hors ligne