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 01/03/2009, à 22:54

Mornagest

Lignes modifiées par une recherche/remplacement et tri

Le titre n'est pas très explicite, je le crains...

J'ai toujours un fichier de 2000 pages à relire (enfin façon de parler je vous rassure) et je voudrais le modifier rapidement pour certaines choses, comme par exemple rechercher une expression et la remplacer par une autre.

Mais j'ai besoin de savoir précisement quelles lignes sont modifiées, puisqu'il s'agit de "patcher" ce fichier...

Du coup je me demandais si c'est possible, en terminal, de faire une recherche dans un fichier et via echo ou un truc du genre sortir la liste des lignes dans lesquelles l'expression serait trouvée...

Je rêve peut-être, mais des fois je suis tellement surpris par les possibilités du terminal qu'on ne sait jamais...

PS : si c'est pas clair, demandez-moi des précisions, je m'exprime peut-être pas bien sur ce coup hmm

Merci d'avance !

Dernière modification par Mornagest (Le 26/04/2009, à 18:18)


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

#2 Le 01/03/2009, à 23:54

coethium

Re : Lignes modifiées par une recherche/remplacement et tri

Oui smile

Pour afficher seulement les lignes contenant une expression précise :

cat fichier | grep "expression"

Pour modifier une expression par une autre

cat fichier | sed s/"expression"/"remplacement"/g > ./fichier2

Et pour faire un patch :

diff -u fichier fichier2 > fichier.patch

Hors ligne

#3 Le 02/03/2009, à 00:11

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

J'ai fait un essai avec grep ... (je cherche à remplacer par exemple les ...tel mot par ... tel mot donc ajout d'un espace après les points de suspension) mais il me ressort toutes les lignes malheureusement... peut-être n'est-ce pas possible pour la ponctuation ?

En tout cas merci pour le coup de main smile

J'ai aussi essayé ceci :

grep -n '...' fichier | sudo tee test

mais là aussi il me ressort toutes les lignes (et il y en a 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

#4 Le 02/03/2009, à 00:19

AnsuzPeorth

Re : Lignes modifiées par une recherche/remplacement et tri

essai sed

sed 's#\.\.\.#\.\.\. #g' fichier

Cette commande remplace les "..." par "... ", pour ecrire dans le fichier mettre opion -i à sed.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 02/03/2009, à 00:25

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Oui, pour modifier le texte ce n'est pas un souci, mais je voudrais logguer les lignes concernées par ledit changement, en fait 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

#6 Le 02/03/2009, à 00:39

tshirtman

Re : Lignes modifiées par une recherche/remplacement et tri

quand tu dis "toutes les lignes" c'est parce que tu parle de très longues lignes qui sont affichés sur plusieurs lignes par ton éditeur de texte mais qui ne contiennent pas de retour chariot?

si oui grep ne t'aidera pas, il faudrait couper pour ne garder que ce qui est entre le '.' précédant et le suivant... avec sed je vois pas trop, ça ressemble plus a un boulot pour awk, mais je ne le connais pas bien...

Hors ligne

#7 Le 02/03/2009, à 13:37

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

En fait certaines lignes sont assez longues pour en occuper deux sur l'éditeur, mais ce n'est pas un retour à la ligne donc normalement ça ne compte que pour une... sauf si je me trompe.

Mais il me ressort l'intégralité des lignes du fichier (soit 74.000 environ) quand je demande de chercher un "..." par exemple.  Je n'ai pas essayé avec du texte, je verrai ce soir...


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

#8 Le 02/03/2009, à 15:03

tshirtman

Re : Lignes modifiées par une recherche/remplacement et tri

Je viens de comprendre, tout est normal: en expression régulière ... correspond à toute séquences de trois characteres (donc en gros à part les lignes vides ou preques, il va chopper tout le monde).


si tu cherche bien des points et non pas nimporte quel charactère, tu doit "échaper" tes points, on utilise le charatère \ pour ça, donc:

grep '\.\.\.' fichier

Hors ligne

#9 Le 02/03/2009, à 15:23

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

OK, super, j'essaierai ce soir alors smile

grep '.\.\.\' fichier | sudo tee test

pour sortir les réponses dans le fichier test... je verrai ce que ça donne.


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

#11 Le 02/03/2009, à 18:04

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Il m'avait bêtement semblé qu'il nécessitait les droits admins tongue mais je vais faire sans, ça me permettra de l'éditer à ma guise ensuite.

Edit : OK droits admins parce que l'exemple que je suivais crée le fichier dans /etc wink

Dernière modification par Mornagest (Le 02/03/2009, à 18: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

#12 Le 02/03/2009, à 20:20

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Commande définitive pour ce faire

grep '.\.\.' Corrections\ VO\ apportées\ par\ le\ BG2FixPack.diff  | tee test

La dernière \ me rendait

grep: Barre oblique inverse en suffixe

donc correction.

Merci tout le monde 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

#13 Le 04/03/2009, à 23:23

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

J'ai crié victoire trop tôt... le fichier contient des expressions

...avecuncaractèreaprès (à corriger par la ligne suivante

et des expressions

...

avec un espace (donc correctes).

J'essaie de lui faire trouver les lignes contenant uniquement la première expression afin de déceler les lignes à corriger (puisque c'est le but final de la manœuvre) mais je n'arrive pas à manier correctement la commande grep pour ce faire... j'ai essayé

grep '.\.\..' fichier

pour lui faire trouver les lignes où un caractère (.) est décelé après ... mais apparemment il considère les espaces comme un caractère (ce qui semble logique).

En résumé, peut-on chercher uniquement les ... sans espace après ? smile

La finalité est de corriger ce fichier pour le proposer en patch du fichier original, mais via un setup exécutable sur Windows (puisque c'est un jeu tournant sur Windows mais avec Wine aussi, quand même).

Bref, merci d'avance pour votre coup de main !


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

#15 Le 04/03/2009, à 23:34

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Super !

Une dernière chose encore et puis je pense que je pourrai me démerder seul... y a-t-il moyen de faire une recherche avec

grep '\.\.\.[^ ]'

et également retirer de la recherche l'expression ...~ ? (le ~ étant le symbole pour délimiter les phrases telles qu'elles apparaissent dans le jeu)

Un tout grand merci en tout cas, Tshirtman ! 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

#16 Le 04/03/2009, à 23:51

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

J'ai essayé ceci

grep -v '\.\.\.[^ ]' fichier

pour inverser la sélection mais il ne me trouve rien, bizarrement... man grep indique qu'il s'agit d'une spécification POSIX, quid ?


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

#17 Le 05/03/2009, à 00:22

tshirtman

Re : Lignes modifiées par une recherche/remplacement et tri

grep '\.\.\.[^ ^~]'

(ça commente ça être joli, on dirais un chat ^^)

Hors ligne

#18 Le 05/03/2009, à 10:16

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

J'y suis enfin arrivé et j'ai pu isoler toutes les lignes que je cherchait (360 occurrences tout de même, ça m'évite un sacré boulot !).

Encore merci, Tshirtman ! wink


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

#19 Le 05/04/2009, à 18:27

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Un p'tit up, j'aimerais savoir si c'est possible de trier des lignes par ordre croissant (à savoir, elles commencent toutes par un numéro) avec un quelconque programme.

Je vais devoir fusionner 30 pages de texte avec 72 autres pages, et les mettre dans l'ordre (sinon c'est le boxon intégral).

Est-ce possible ?

Merci d'avance 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

#20 Le 05/04/2009, à 18:36

AnsuzPeorth

Re : Lignes modifiées par une recherche/remplacement et tri

Bjr,
avec sort pour trier . Option -k pour spécifier une colonne.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#21 Le 05/04/2009, à 19:37

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Merci smile

J'ai tenté un test.  Mon fichier contient

@12763 = ~Zorl~
@12767 = ~Ragefast~
@12764 = ~Narlen Darkwalk~
@12766 = ~Poe~
@12765 = ~Neb~
@12768 = ~Raiken~
@12762 = ~Yago~
@12769 = ~Ramazith~
@12770 = ~Rededge~

Je tape

sort Test\ lignes\ à\ trier --key=POS2[,POS6]

pour qu'il commence à trier à partir de la colonne 2 jusqu'à la colonne 6, mais il me répond ceci :

sort: caractère égaré dans le champ de spécification: spécification invalide du champ `2[,6]'

Je ne suis pas sûr d'avoir compris l'exemple du manuel hmm

Edit : quand je tape

sort Test\ lignes\ à\ trier --key=6

ça fonctionne, mais je ne comprends pas comment baliser le tri. J'en ai besoin parce que j'ai environ 75.000 lignes à trier smile

Dernière modification par Mornagest (Le 05/04/2009, à 19:39)


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

#23 Le 05/04/2009, à 20:54

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Ah ouais, quand les lignes ont toutes le même nombre de numéros, ça marche vachement bien (et c'est le cas, heureusement.  Je pense que c'est fait exprès tongue).

Super, merci à tous les deux cool me suffit de faire un tee dans un autre fichier et tout roule smile

Dernière modification par Mornagest (Le 05/04/2009, à 20:55)


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

#24 Le 11/04/2009, à 14:58

Mornagest

Re : Lignes modifiées par une recherche/remplacement et tri

Hum, encore une question big_smile

Pour les caractères spéciaux, du genre éèàâêç etc... je fais comment pour les trouver via grep ? 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

#25 Le 11/04/2009, à 16:05

tshirtman

Re : Lignes modifiées par une recherche/remplacement et tri

hum, bonne question, y'a toujours
[àéèçâêîöôïäêë]
(évenutellement à compléter)
je ne sais pas si il y a de solutions plus standard...

Hors ligne