Neo_13 Posté(e) le 3 mars 2008 Partager Posté(e) le 3 mars 2008 Salut, J'ai hésité entre ici et "programmation"... Idéalement, c'est un cmp de deux fichiers binaires (qui retourne un txt sur la sortie standard), calcul le nombre de ligne (donc le nombre d'octets différends), en comptant les \n par exemple, et calcule ce nombre / taille fichier pour savoir le pourcentage d'octets différent. Quelqu'un peut il m'aider ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
tyrann27 Posté(e) le 3 mars 2008 Partager Posté(e) le 3 mars 2008 Salut Je dois dire que je ne comprends pas toute la question ni le résultat attendu... Néanmoins as-tu essayé avec diff ? Si oui, qu'est-ce qui l'empeche de fonctionner convenablement ? Ou du moins, qu'est-ce qui ne répond pas à ton attente dans cette commande? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 3 mars 2008 Auteur Partager Posté(e) le 3 mars 2008 SalutJe dois dire que je ne comprends pas toute la question ni le résultat attendu... Néanmoins as-tu essayé avec diff ? Si oui, qu'est-ce qui l'empeche de fonctionner convenablement ? Ou du moins, qu'est-ce qui ne répond pas à ton attente dans cette commande? je veux avoir en % le nombre d'octets différent entre 2 binaires Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 3 mars 2008 Partager Posté(e) le 3 mars 2008 Ça n'affiche pas le pourcentage car l'interprétation de "octet ajouté", "octet supprimé" ou "octet modifié" est assez difficile à faire, surtout lorsque les deux fichiers ne sont pas de la même taille. Mais tu peux rajouter des infos à la fin avec le calcul que tu veux :) #!/bin/sh if [ "$1" = "-v" ] then VERBOSE="1" shift fi if ! [ "$1" -a "$2" ] then echo "Usage: $0 file1 file2" exit 1 fi if ! ls "$1" "$2" >/dev/null then exit 1 fi # temporary files names T1="$(mktemp)" || exit 1 T2="$(mktemp)" || exit 1 # list bytes [ "$VERBOSE" ] && echo -n "List $1 bytes..." hexdump -v -e '1/1 "%02x\n" ""' "$1" > "$T1" [ "$VERBOSE" ] && echo " done" [ "$VERBOSE" ] && echo -n "List $2 bytes..." hexdump -v -e '1/1 "%02x\n" ""' "$2" > "$T2" [ "$VERBOSE" ] && echo " done" # line count L1="$(wc -l < "$T1")" L2="$(wc -l < "$T2")" # size S1="$(ls -lL "$1" | awk '{print $5}')" S2="$(ls -lL "$2" | awk '{print $5}')" # is line count the same than size? should be if [ "$L1" != "$S1" ] then echo "Error: L1!=S1" echo "L1=$L1" echo "S1=$S1" exit 1 fi if [ "$L2" != "$S2" ] then echo "Eerror: L2!=S2" echo "L2=$L2" echo "S2=$S2" exit 1 fi [ "$VERBOSE" ] && echo -n "Generate diff..." STATS="$(diff "$T1" "$T2" | diffstat -tu | grep -v '^INSERTED' | awk -F, '{print $1" "$2" "$3}')" [ "$VERBOSE" ] && echo " done" [ "$VERBOSE" ] && echo "" rm -f "$T1" "$T2" echo "$1 size: $L1 bytes" echo "$2 size: $L2 bytes" echo "" INS="$(echo "$STATS" | awk '{print $1}')" DEL="$(echo "$STATS" | awk '{print $2}')" MOD="$(echo "$STATS" | awk '{print $3}')" echo "bytes inserted: $INS" echo "bytes deleted: $DEL" [ "$MOD" != "0" ] && echo "bytes modified: $MOD" # should be 0 exit 0 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 3 mars 2008 Auteur Partager Posté(e) le 3 mars 2008 merci, je vais tester ça. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 4 mars 2008 Partager Posté(e) le 4 mars 2008 Pour comparer des binaires tu peux utiliser hexdump ou strings (pas lu les réponses au dessus désolé si c'est un post inutile ). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 6 mars 2008 Partager Posté(e) le 6 mars 2008 j'ai pas tout capté mais la commande wc permet de compter le nombre de lignes, de mots ou de caractères ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 22 mars 2008 Partager Posté(e) le 22 mars 2008 nm/objdump ? (c'est pas exactement ce que tu cherche, mais pourqoi pas ?) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.