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.

#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 big_smile

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 smile


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 hmm

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 tongue), 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 hmm

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... tongue

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 ... smile

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... hmm


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 smile


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 tongue


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... tongue

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" tongue


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 tongue, 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 wink.

ouais, c'est un RTFM ou un STFW dit gentilement je sais wink.

ps: oh y'a aussi apprendre python et le module "re" tongue

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 smile


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 tongue

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 tongue), 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 tongue).  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 ? smile

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

tshirtman a écrit :

(et je ne peut pas être sur que AnsuzPeorth ait bien compris non plus). ^^

J'étais pas loin finalement smile disons que j'effectuais le boulot du logiciel de moding (presque, il aurait fallut juste modif un peu)

tshirtman a écrit :

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 wink.

+1
Mais si il ne veut pas apprendre, tant pis pour lui smile

@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 smile

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 tongue

Merci encore, les gars cool


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 ? yikes

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 hmm 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 hmm

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

Mornagest a écrit :

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 ? yikes

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.

Mornagest a écrit :

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


Mornagest a écrit :

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 hmm 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.

Mornagest a écrit :

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 hmm

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 smile 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 sad


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 smile
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 sad 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