Traduire un algo en shell
Bonjour,
j'ai fais une petite partie d'algorithme pour la réalisation d'un projet mais je n'ai jamais programmé sur shell et du coup je ne sais pas comment traduire mon algo en shell script
(
Je crée un fichier .txt qui contient les noms des fichiers de la cat. A et un autre contenant les noms de fichiers de la cat. B (un nom par ligne)
compteur i <- EOF B <- nbre_lignes de fichier B
compteur j <- EOF A <- nbre_lignes de fichier A
...
...
...
Pour i=1 jusqu'à "EOF B" faire
titreB <- ligne(i) du fichierB
Pour j=1 jusqu'à "EOF A" faire
titreA<- ligne(j) du fichierA
cat titreB titreA > resultat
gzip resultat > resultat.gz
enregistrer titreB titreA taille_resultat.gz > Tailles.txt
rm resultat.txt; rm resultat.gz
cat titreA titreB > resultat
gzip resultat > resultat.gz
enregistrer titreA titreB taille_resultat.gz > Tailles.txt
rm resultat.txt; rm resultat.gz
Fin pour
Fin pour
...
...
...
)
y a-t-il qqn qui peut m'aider et m'expliquer comment ?
Merci d'avance
j'ai fais une petite partie d'algorithme pour la réalisation d'un projet mais je n'ai jamais programmé sur shell et du coup je ne sais pas comment traduire mon algo en shell script
(
Je crée un fichier .txt qui contient les noms des fichiers de la cat. A et un autre contenant les noms de fichiers de la cat. B (un nom par ligne)
compteur i <- EOF B <- nbre_lignes de fichier B
compteur j <- EOF A <- nbre_lignes de fichier A
...
...
...
Pour i=1 jusqu'à "EOF B" faire
titreB <- ligne(i) du fichierB
Pour j=1 jusqu'à "EOF A" faire
titreA<- ligne(j) du fichierA
cat titreB titreA > resultat
gzip resultat > resultat.gz
enregistrer titreB titreA taille_resultat.gz > Tailles.txt
rm resultat.txt; rm resultat.gz
cat titreA titreB > resultat
gzip resultat > resultat.gz
enregistrer titreA titreB taille_resultat.gz > Tailles.txt
rm resultat.txt; rm resultat.gz
Fin pour
Fin pour
...
...
...
)
y a-t-il qqn qui peut m'aider et m'expliquer comment ?
Merci d'avance
A voir également:
- Traduire un algo en shell
- Classic shell - Télécharger - Personnalisation
- Comment traduire un site en français - Guide
- Traduire un texte en photo - Guide
- Comment traduire sur whatsapp - Accueil - Messagerie instantanée
- Traduire un vocal whatsapp - Accueil - Messagerie instantanée
2 réponses
Remarques préliminaires :
- Commence par lire un cours sur bash (cf google) pour apprendre à écrire les blocs algorithmiques :
https://linuxconfig.org/bash-scripting-tutorial
- L'opérateur > (qui en réalité est 1>) écrit à la place d'un fichier (et le crée si besoin). L'opérateur >> (en réalité 1>>) écrit à la suite d'un fichier. C'est celui ci que tu dois utiliser.
- Pense à utiliser le man. Ainsi tu verras que gzip ne s'utilise pas comme tu l'as fait :
(q pour pour quitter). En fait ce serait plutôt
Bonne chance
- Commence par lire un cours sur bash (cf google) pour apprendre à écrire les blocs algorithmiques :
https://linuxconfig.org/bash-scripting-tutorial
- L'opérateur > (qui en réalité est 1>) écrit à la place d'un fichier (et le crée si besoin). L'opérateur >> (en réalité 1>>) écrit à la suite d'un fichier. C'est celui ci que tu dois utiliser.
echo "bonjour !" 1> coucou.txt # écrase le contenu de coucou.txt echo "pouet" 1>> coucou.txt # écrit à la suite echo "plop" 1>> coucou.txt cat coucou.txt
- Pense à utiliser le man. Ainsi tu verras que gzip ne s'utilise pas comme tu l'as fait :
man gzip
(q pour pour quitter). En fait ce serait plutôt
# produit toto.gz à partir de toto gzip toto
Bonne chance
En perl qui est installé sur toutes les distribution par défaut tu peux faire comme ceci.
(colle le script dans un fichier et rend les exécutable
(chmod =x script.pl))
ça y est, je l'ai testé, ça ne risque rien
J' aurai pu l'écrire sur quelques lignes mais c'est pour expliquer que j'ai développé tout.
(sh ash bash csh ksh zsh = ligne de commande du système que tu dispose (pour linux c'est le bash Bourne again shell))
[_Al_right_] [8O°) [8O*) [8o. |8*) |:o. [8. [8O{'} [8O°)
========== [_a____l_a_i_n__] ** **
(colle le script dans un fichier et rend les exécutable
(chmod =x script.pl))
#!/usr/bin/perl # ouverture fichierA, lecture, stockage contenu et fermeture $fa = "fichierA.txt"; open FA, "$fa" or die "Ouverture de $fa impossible $!"; @fileA = <FA>; close FA || die "fermeture de $fa impossible $!"; # pareil pour le fichierB $fb = "fichierB.txt"; open FB, "$fb" or die "Ouverture de $fb impossible $!"; @fileB = <FB>; close FB || die "fermeture de $fb impossible $!"; # traitement files A, recherche titre et nombre de lignes foreach $l(@fileA) { chomp; next if /""/; $filename = $l; print "ceci est filename $filename\n"; open AF, "$filename" or die "Ouverture de $filename impossible $!"; @fA = <AF>; close AF || die "fermeture de $filename impossible $!"; my $i = 0; foreach (@fA) { if($i = 0) { $titreA = $_; $compteurj++; $i++; } else { $compteurj++; $i++; } } push @titreA, $titreA; push @nbrligneA, $compteurj; $titreA = ""; $compteurj = 0; } # traitement des file B et recherche du titre et nbr de lignes foreach (@fileB) { chomp $_; $filename = $_; open BF, "$filename" or die "Ouverture de $filename impossible $!"; @fB = <BF>; close BF || die "fermeture de $filename impossible $!"; my $i = 0; foreach (@fB) { if($i = 0) { $titreB = $_; $compteuri++; $i++; } else { $compteuri++; $i++; } } push @titreB, $titreB; push @nbrligneB, $compteuri; $titreB = ""; $compteuri = 0; } # traitement resultat titre B nbr ligne, titre A nbr ligne $resultat = "./resultat.txt"; open RES, ">$resultat" or die "err ouverture de $resultat $!"; print RES "traitement des fichiers A et B et nombre de lignes\n"; $nmbenreg = @titreB; for ($i = 0, $i++, @nmbenreg) { my $titreA = shift @titreA; my $compteurj = shift @nbrligneA; my $titreB = shift @titreB; my $compteuri = shift @nbrligneB; print RES "titre B: $titreB\tnbr ligne: $compteuri | titre A: $titreA\tnbr ligne: $compteurj\n"; } close RES || die "fernmeture de $resultat impossible $!"; # script testé, alain END;
ça y est, je l'ai testé, ça ne risque rien
J' aurai pu l'écrire sur quelques lignes mais c'est pour expliquer que j'ai développé tout.
(sh ash bash csh ksh zsh = ligne de commande du système que tu dispose (pour linux c'est le bash Bourne again shell))
[_Al_right_] [8O°) [8O*) [8o. |8*) |:o. [8. [8O{'} [8O°)
========== [_a____l_a_i_n__] ** **