43 lines
1.1 KiB
Bash
Executable File
43 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
## extrait d'un fichier binaire 'file' a partir du 'first' octet (compris, commence a compter a 1)
|
|
## en comptant 'count' octets
|
|
|
|
|
|
usage() {
|
|
echo "Usage: $0 first count file (chemin du fichier a traiter)"
|
|
echo " ou: $0 first count (avec l'utilisation de l'entrée standard)"
|
|
|
|
echo " Extrait les octets d'un fichier binaire 'file' ( ou de l'entrée standard) "
|
|
echo " a partir du 'first' octet (compris, commence a compter a 1)"
|
|
echo " en comptant 'count' octets"
|
|
echo " example : ./xt 4097 $((16#b0)) stream1.mp3 > stream.entete2.bin"
|
|
|
|
exit 1
|
|
}
|
|
|
|
# Vérifie que 2 ou 3 arguments ont été passés
|
|
if [ "$#" -ne 2 ] && [ "$#" -ne 3 ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# Par défaut, utilise l'entrée standard comme entrée
|
|
input="/dev/stdin"
|
|
# Récupère les arguments passés en paramètre
|
|
first="$1"
|
|
count="$2"
|
|
if [ "$#" -eq 3 ]; then
|
|
input="$3"
|
|
fi
|
|
|
|
|
|
|
|
if [ "$count" = "-" ] ; then
|
|
# Lance tail ans head car on veut jusq'ua bout du fichier
|
|
cat "$input"| tail -c+$first
|
|
else
|
|
# Lance tail et head pour récupérer les octest demandés
|
|
cat "$input"| tail -c+$first |head -c$count
|
|
fi
|