Vous n'êtes pas identifié(e).
Celle-ci ?
oui.
Hors ligne
enicar a écrit :Note : j'ai modifié la définition de la variable INFO_AC3_DTS_MPEG1 dans le post #215.
L'ancienne définition ne devait pas fonctionner, mais je n'en suis pas sûr.
À vérifier.
Celle-ci ?INFO_AC3_DTS_MPEG1=$(lsdvd_x "$i" | \
awk '/ac3,|dts,|mpeg1,/ { x = x $4 ","}
END { sub(/,*$/, "", x); print x }')
En tout cas, celle-ci fonctionne.
J'étais retourné sur la mienne, car l'amélioration me sortait :
au lieu de:
J'étais retourné sur la mienne, car l'amélioration me sortait :
C'est laquelle qui ne fonctionnait pas ?
Et c'est laquelle qui fonctionne ?
Je m'y retrouve plus
Hors ligne
combien en français
c'est la numéro 2
Dernière modification par Anonyme (15-06-2019 16:42:15)
Anonyme a écrit :J'étais retourné sur la mienne, car l'amélioration me sortait :
C'est laquelle qui ne fonctionnait pas ?
Et c'est laquelle qui fonctionne ?
Je m'y retrouve plus
Celle-ci fonctionne.
Celle-ci fonctionne.
La dernière est la bonne, tant mieux
Hors ligne
et pas
c'est important ?
c'est important ?
Juste une question de style. Je mets toujours une espace avant un pipe « | »
et jamais après sauf si je mets une continuation de ligne derrière (c'est à dire un « \ »),
auquel cas je mets un espace derrière pour bien séparer visuellement la continuation de la ligne.
Hors ligne
Anonyme a écrit :c'est important ?
Juste une question de style. Je mets toujours une espace avant un pipe « | »
et jamais après sauf si je mets une continuation de ligne derrière (c'est à dire un « \ »),
auquel cas je mets un espace derrière pour bien séparer visuellement la continuation de la ligne.
Merci.
Pour l'amélioration des lignes sur mon avant dernier post, je vais essayer de le faire avec grep -c
De toute façon, celle qui donne 15 streams, c'est archi faux !!!
Je ne suis pas sûr que ça vaille le coup.
Ça consiste à mettre le champ $11, dans le tableau arr à
l'indice NR. On utilise une variable max pour savoir
quel est l'indice maximum du tableau. Ensuite on traite le tableau
dans le bloc END. On supprime le dernier caractère du dernier élément
du tableau. Puis on affiche le tableau. Remarque que le i que
j'utilise dans la boucle for du bloc END, n'a rien à voir avec la
variable i de bash…
Je ne sais pas si faire un sub directement sur un élément d'un tableau
comme ça fonctionne… Donc autant dire que je ne sais pas si ça
fonctionne.
Maintenant, je vais tâcher de regarder les lignes du post #229.
Il faudrait que tu m'expliques quand même ce qu'elles sont censées faire.
EDIT : J'ai simplifié cette version. Et j'ai
vérifié que « sub(/.$/, "", arr[max]) » fonctionne d'après le manuel
de gawk. Il ne reste plus qu'à tester un cas réel.
Dernière modification par enicar (15-06-2019 21:30:33)
Hors ligne
C'est facile. Il suffit de remplacer :
par
Voire même :
Ce qui nous donne finalement :
D'ailleurs je ne sais pas où tu as chopé ce truc :
Je trouve cela quand même un poil compliqué
PS: J'ai pensé encore à un autre truc, mais je ne le montre pas
car ça va finir par tout se mélanger dans ta tête, si ce n'est pas
déjà fait
EDIT :Suppression de l'option « -v »dans la commande mplayer.
Dernière modification par enicar (21-06-2019 16:41:55)
Hors ligne
Peut être remplacé par :
À condition bien sûr que les motifs « stream », « audio » et « fre »
soient trouvés dans cet ordre.
Hors ligne
PS: J'ai pensé encore à un autre truc, mais je ne le montre pas
car ça va finir par tout se mélanger dans ta tête, si ce n'est pas
déjà fait
Pour la variable COUNT_AUDIO_FR, même traitement.
Le code :
COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
-v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
grep 'stream' | grep 'audio' | grep 'fre,' | \
awk '{print $3}' | awk '{x=x+NF}END{print x}')
Peut être remplacé par :
COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
-v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
|grep -c 'stream.*audio.*fre')
À condition bien sûr que les motifs « stream », « audio » et « fre »
soient trouvés dans cet ordre.
Moi j'avais ça :
On pourrait remplacer :
par :
Reste le comptage. On peut le faire directement dans awk.
Au lieu du « { print $3 } », on va compter le nombre de ligne.
Et afficher ce comptage dans le bloc END. Ce qui donne au final :
Ce qui permet de faire le comptage, c'est « count=count+1 », comme tu
l'auras compris. Je n'ai pas testé mais ça devrait fonctionner.
EDIT : J'ai ajouté un test dans le bloc END de awk au cas
où il n'y a aucune correspondance.
Dernière modification par enicar (15-06-2019 17:55:06)
Hors ligne
Moi j'avais ça :
COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv" | grep -E -c 'stream/|audio/|fre,')
Je t'ai expliqué post #217 pourquoi une simple alternative dans grep
ne revenait pas au même qu'une succession de grep. Tu peux relire
ce post et me demander si tu n'as pas compris.
Dernière modification par enicar (15-06-2019 21:31:56)
Hors ligne
Dernière modification par enicar (15-06-2019 18:13:51)
Hors ligne
Anonyme a écrit :Moi j'avais ça :
COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv" | grep -E -c 'stream/|audio/|fre,')
Je t'ai expliqué post #217 pourquoi une simple alternative dans grep
ne revenait pas au même qu'un successsion de grep. Tu peux relire
ce post et me demander si tu n'as pas compris.
il n'y a qu'un grep non ?
pour moi je comprend que je cherche toutes les lignes contenant "stream audio et fre" et que si il en manque un sur les trois demandé, ça ne sera pas comptabilisé. Donc trois ou sinon rien.
Si, c'est pas ça, là j'ai du mal
Dernière modification par Anonyme (15-06-2019 18:26:07)
il n'y a qu'un grep non ?
T'es sûr d'avoir bien tout lu ?
Hors ligne
Anonyme a écrit :il n'y a qu'un grep non ?
T'es sûr d'avoir bien tout lu ?
J'y retoune mais je coupe AC/DC
J'y retoune mais je coupe AC/DC
Évidemment, ça demande de la concentration, AC/DC n'est pas adapté, je pense.
En tout cas au post 217, c'est bien le cas 2 qui me convient.
Bien. Et tu as compris pourquoi ?
Hors ligne
Comme précédemment, on peut remplacer :
Par :
Ce qui est quand même mieux.
Ça donnerait pour la commande :
Reste la ligne de sed et le tr. On peut tout faire dans awk. Cependant
ça fait un peu plus de code. Voilà le résultat final :
Tu devras tester cette dernière version car je ne sais pas si va
fonctionner.
Remarque, ça commence à ressembler à de la programmation classique,
tu seras bientôt mûr pour python
En résumé, on a les correspondances suivantes :
« sed 's/[^0-9]*//g' » devient « gsub(/[^0-9]+/, "", cur) »
« sed 's/./& ,/g' » devient « gsub(/./, "& ,", cur) »
« sed '$ s/.$//' » devient « if (i == max) sub(/.$/, "", cur) »
« tr -d '[:space:]' » devient « gsub(/ +/, "", cur) »
Dernière modification par enicar (15-06-2019 19:24:04)
Hors ligne
Avec une petite astuce, j'ai supprimé la possibilité d'avoir des trous
dans mon tableau « arr ». Ainsi, je n'ai plus besoin de tester si
l'élément de « arr de i » existe.
Hors ligne