Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 20-05-2021 11:24:42

Maufab
Membre
Lieu : Ariège
Distrib. : Buster
Noyau : 4.19.0-9-amd64
(G)UI : KDE
Inscription : 12-03-2010

[Résolu] rechercher-remplacer série de nombres incrémentés

Bonjour,
dans un fichier .srt, chaque partie est numérotée de 1 à par ex. 495. À partir de 2 fichiers. srt je veux n'en faire qu'un seul. Et donc reprendre la numérotation du second depuis le dernier numéro du 1er fichier. Donc utiliser les expressions régulières. J'ai commencé avec celle-ci : ^\d{3} mais qui bien sûr ne m'affiche que les nombres à 3 chiffres. Comment faire pour afficher tous les nombres de 1 à 495 ? Et bien sûr remplacer ceux du second fichiers en suivant ceux du premier ?

Dernière modification par Maufab (21-05-2021 22:10:56)


Debian Buster 64bits
Portable Asus X73S

Hors ligne

#2 20-05-2021 12:52:25

enicar
Membre
Lieu : ailleurs
Distrib. : sid
Noyau : Linux 5.13.10
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] rechercher-remplacer série de nombres incrémentés

Bonjour,
Ça serait bien de dire quel outil tu utilises pour récupérer les
nombres. En plus j'aimerais avoir une description succincte du format
d'un fichier .srt (fichier de sous-titres vidéo).

L'expression régulière employée « ^\d{3} » me fait penser à perl.
Remarque, qu'on peut utiliser le délimiteur qui doit être derrière le
nombre ou un autre quantificateur. Par exemple : « ^\d+ » qui
correspond à un nombre quelconque de chiffres (1 ou plusieurs).
La version avec délimiteur est plus complexe, en supposant que ce
n'est pas un chiffre on pourrait utiliser : « ^(\d*)[^0-9] », mais ça
n'apporte pas grand chose.

Ensuite, tout dépend de l'outil que tu utilises, une fois que tu as
récupéré ce nombre, ce n'est pas difficile. En perl ça sera une simple
addition, suivi d'une substitution. On peut même faire tout en même
temps avec par exemple :


$line =~ s/^\d+/$&+495/e
 


si je me souviens bien.

PS: Pour la lecture du second fichier un code comme le suivant pourrait être
utilisé :


#! /usr/bin/perl
open(FIK1, ">>resultat.srt");
open(FIK2, "fichier2.srt");
while ($line = <FIK2>) {
    $line =~ s/^\d+/$&+495/e;
    print FIK1 $line;
}

close FIK1;
close FIK2;
 


C'est juste un exemple. On doit pouvoir faire la même chose en bash,
python ou ruby ausi simplement. Ce n'est pas un soucis.

Dernière modification par enicar (20-05-2021 12:59:27)

Hors ligne

#3 20-05-2021 13:59:02

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [Résolu] rechercher-remplacer série de nombres incrémentés

Hello
Sinon en graphique y'a le paquet gaupol qui le fait
on ouvre le premier fichier puis on utilise le menu outils Ajouter un fichier et on ajoute le 2éme fichier
les numéros sont incrémenté automatiquement

edit : pour que le fichier soit correcte il faut que le temps soit aussi repris depuis la fin du premier fichier ce que fait gaupol , alors que en ligne de commande cela complique les choses

Dernière modification par Croutons (20-05-2021 18:43:12)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#4 20-05-2021 18:34:24

enicar
Membre
Lieu : ailleurs
Distrib. : sid
Noyau : Linux 5.13.10
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu] rechercher-remplacer série de nombres incrémentés

si il existe un outil pour le faire, autant utiliser cet outil, merci Croutons wink

Hors ligne

#5 20-05-2021 18:57:09

Maufab
Membre
Lieu : Ariège
Distrib. : Buster
Noyau : 4.19.0-9-amd64
(G)UI : KDE
Inscription : 12-03-2010

Re : [Résolu] rechercher-remplacer série de nombres incrémentés

Merci pour vos réponses. Je regarderai ça de plus près.
En attendant, j'ai utilisé une série de pipes pour la recherche : ^\d{1}$ | ^\d{2}$ | ^\d{3}$
que je pense faire suivre d'une boucle incrémentale.
Ce n'est peut-être pas ce qu'il y a le plus élégant.
Le Perl, je ne maitrise pas. Je me sens plus à l'aise avec le bash ou C bien que je n'ai pas pratiqué depuis un moment. D'où mes hésitations.
@enicar, j'ai utilisé le mode expressions régulières dans Kate. La boucle while, c'est une boucle infinie ? Une boucle for ne serait-elle pas plus adaptée ?

Dernière modification par Maufab (20-05-2021 23:31:22)


Debian Buster 64bits
Portable Asus X73S

Hors ligne

#6 21-05-2021 22:09:57

Maufab
Membre
Lieu : Ariège
Distrib. : Buster
Noyau : 4.19.0-9-amd64
(G)UI : KDE
Inscription : 12-03-2010

Re : [Résolu] rechercher-remplacer série de nombres incrémentés

Encore merci. J'ai utilisé Gaupol finalement.

Debian Buster 64bits
Portable Asus X73S

Hors ligne

Pied de page des forums