Bonsoir à tous,

J'ai un problème relativement étrange qui semble plutôt difficile à résoudre (mais très simple à appréhender).

Je souhaitais (et souhaite encore) créer une base de données (plutôt immense) de parties d'échecs. Les parties d'échecs sont habituellement (comme dans mon cas) sous format PGN (portable game notation), qui sont typiquement des fichiers texte, tout simplement. Le problème est que j'essaie de rassembler plusieurs fichiers PGN (qui contiennent un nombre "normal" de parties, disons maximum 18 000 par fichier). Ces fichiers prennent disons entre 5 Mo et 10 Mo en moyenne, le plus gros étant de 18 Mo. Il y a 231 fichiers dont la taille total est de 925 Mo.

À l'aide d'un éditeur de texte normal (Notepad je pense, dans Windows), j'ai rassemblé ces fichiers PGN en 9 fichiers PGN en copiant/collant le contenu. Ces fichiers sont donc très volumineux (de 80 Mo à 135 Mo, quelque chose comme ça). J'essaie maintenant de rassembler ces 9 fichiers en un seul, mais je suis incapable.

J'ai déjà mis les 3 premiers ensemble, ce qui me donne un fichier d'un peu plus de 300 Mo (mais moins que 301 Mo). Dès que j'essaie de l'ouvrir avec un éditeur de texte quelconque, soit que tout charge indéfiniment, ou bien on m'avertit explicitement que le fichier ne peut être ouvert dû à sa taille.

Autrement dit, je suis présentement incapable de "merger" (pardonnez-moi le mot anglais) mes 9 fichiers PGN ensemble.

L'un de vous connaîtrait-il un fichier quelconque qui puisse justement créer un nouveau fichier texte à partir de plusieurs autres, en les "unifiant", tout simplement?

Notez que, par exemple, la base de 300 Mo est ouvrable par les logiciels typiques d'échecs, et n'est donc pas défectueux. Simplement trop volumineux pour être ouvert avec un éditeur de texte. Aussi, je n'arrive pas à faire ce que je veux faire depuis un de ces fameux logiciels, entre autres parce qu'ils semble tous être très limités (ou limitants) quant à la taille des bases de données que l'on puisse créer. Par exemple, l'un d'eux (scid) ne permet pas de créer de bases de données de plus de 50 000 parties (j'en ai au-delà de 2 millions).

Merci,
Philippe.
Bonjour,

s'il s'agit simplement de concaténer tes fichiers à la suite, la commande cat est faite pour toi :
$ cat fichier1.pgn fichier2.pgn fichier3.pgn > fichier_final.pgn
Ah, simplement magique... magique magique magique... si seulement j'avais su avant!

J'ai perdu plusieurs heures à essayer d'ouvrir ou de copier/coller le contenu de ces fichiers, et avec cette merveilleuse commande qui m'était inconnue avant ce soir, ça a pris 1 minute et 20 environ (j'ai calculé... j'étais curieux).

J'ai même appris à utiliser vi pour me promener d'une ligne à l'autre (par exemple, pour aller à la 22 000 000ième ligne) pour corriger diverses erreurs dans les parties.

En tout cas, ce fut une soirée instructive!

Merci beaucoup pour votre aide Pikachu_2014,
Philippe.
Tres joli ton nouvel avatar Pikachu !
Ta solution est tres elegante.

J'ajouterai que si tu veux rajouter un autre fichier, tu peux ensuite faire:
$ fichier4.pgn >> fichier_final.pgn
De cette maniere, le fichier 4 sera rajoute a la fin du fichier final.
Bonjour,

Ce ne sera pas nécessaire, mais c'est tout de même noté dans ma tête (on ne sait jamais)!

Merci,
Philippe.
Excusez moi mais cette commande m'intéresse beaucoup pour mon travail quotidien. J'ai essayé de regarder au niveau du man cat, mais je n'ai pas trouvé d'infos sur > ou >> ? À quoi servent ces guillemets ?
Merci Pika
Je vais regarder ça ^^
Seigneur wrote:Ah, simplement magique... magique magique magique... si seulement j'avais su avant!

J'ai perdu plusieurs heures à essayer d'ouvrir ou de copier/coller le contenu de ces fichiers, et avec cette merveilleuse commande qui m'était inconnue avant ce soir, ça a pris 1 minute et 20 environ (j'ai calculé... j'étais curieux).

J'ai même appris à utiliser vi pour me promener d'une ligne à l'autre (par exemple, pour aller à la 22 000 000ième ligne) pour corriger diverses erreurs dans les parties.

En tout cas, ce fut une soirée instructive!

Merci beaucoup pour votre aide Pikachu_2014,
Philippe.
pour calculer le temps d'une commande tu a la commande time à mettre devant ta commande 😉
Sven wrote:Excusez moi mais cette commande m'intéresse beaucoup pour mon travail quotidien. J'ai essayé de regarder au niveau du man cat, mais je n'ai pas trouvé d'infos sur > ou >> ? À quoi servent ces guillemets ?
le simple ecrase
le double concatene(ajoute à la suite)
4 jours plus tard
tu devrais lire un peu de la doc sur bash en français ainsi que du scripting, c est pas si dur et ça aide
Les redirections ne sont pas un exclusivité de la commande cat, mais des fonctionnalités offertes par le shell.
C'est donc avec un 'man sh' ou 'man bash' (c'est par défaut le même) au chapitre REDIRECTION que tu trouveras une indication sur la/les redirections.
Seigneur wrote:Ah, simplement magique... magique magique magique... si seulement j'avais su avant!

J'ai perdu plusieurs heures à essayer d'ouvrir ou de copier/coller le contenu de ces fichiers, et avec cette merveilleuse commande qui m'était inconnue avant ce soir, ça a pris 1 minute et 20 environ (j'ai calculé... j'étais curieux).

J'ai même appris à utiliser vi pour me promener d'une ligne à l'autre (par exemple, pour aller à la 22 000 000ième ligne) pour corriger diverses erreurs dans les parties.

En tout cas, ce fut une soirée instructive!

Merci beaucoup pour votre aide Pikachu_2014,
Philippe.
Calculer ?

Tu précède ta commande par la commande time et il calcule pour toi.
time cat f1 f2 f3 > f4
Fastoche 🙂
n1ck0 wrote:tu devrais lire un peu de la doc sur bash en français ainsi que du scripting, c est pas si dur et ça aide
C'est juste perturbant au début, parce que le style d'écriture est difficile à lire.
Mais quand on commence à se rendre compte de la puissance de la bête, ça devient très excitant 😉
Fade wrote:
Seigneur wrote:Ah, simplement magique... magique magique magique... si seulement j'avais su avant!

J'ai perdu plusieurs heures à essayer d'ouvrir ou de copier/coller le contenu de ces fichiers, et avec cette merveilleuse commande qui m'était inconnue avant ce soir, ça a pris 1 minute et 20 environ (j'ai calculé... j'étais curieux).

J'ai même appris à utiliser vi pour me promener d'une ligne à l'autre (par exemple, pour aller à la 22 000 000ième ligne) pour corriger diverses erreurs dans les parties.

En tout cas, ce fut une soirée instructive!

Merci beaucoup pour votre aide Pikachu_2014,
Philippe.
Calculer ?

Tu précède ta commande par la commande time et il calcule pour toi.
time cat f1 f2 f3 > f4
Fastoche 🙂
je t'ai grilled depuis longtemps regarde plus haut :-P
mmm j'ai laggé 🙂
Encore merci pour vos réponses, je vais étudier la doc de bash ^^
Attention à l'indigestion :-P
Attention à l'indigestion
C'est comme tout, on s'habitue 😉