#!/bin/bash # Récupération des arguments OPTS=`getopt -o i:o: -- "$@"` if [ $? != 0 ] then exit 1 fi eval set -- "$OPTS" while true ; do case "$1" in -i) input="$2"; shift 2;; -o) output="$2"; shift 2;; --) shift; break;; esac done # Si input n'est pas définie if [ -z "$input" ] then echo "available parameters :"; echo "-i path/to/input_file or /path/to/directory (can't be empty!)"; exit 1; fi # Si output n'est pas définie if [ -z "$output" ] then echo "available parameters :"; echo "-o path/to/output_file (can't be empty!)"; exit 1; fi # Fonction de comptage des EN # Elle prend en paramètre : $1 = fichier à traiter; $2 : fichier de sortie function count_EN { # Résultat line="$1;"; # Toutes les balises recherchées arr_en=('<persName' '<placeName' '<geogName' '<orgName' '<date' 'type="funder"' 'type="url"' 'type="bibl"' '<bibl' 'type="provider"' '</standOff>'); # Pour chaque EN recherchée, grep sur le fichier et récupération du nombre de ligne for j in ${arr_en[*]} do data=$(grep -o "$j" $1 | wc -l); line=$line$data";"; echo $j': '$data; done # Écriture dans le fichier echo $line >> $2; } # Header du fichier de sortie echo "file;<persName>;<placeName>;<geogName>;<orgName>;<date>;<orgName type=\"funder\">;<ref type=\"url\">;<ref type=\"bibl\">;<bibl>;<orgName type=\"provider\">;<standOff>" > $output; if [ -d "$input" ]; then # compteur de fichier i=0 # Pour chaque fichier dans le répertoire for f in $(find $input -type f) do # Petit affichage du fichier en cours echo "Fichier en cours : $f ($i)"; # Lancement de la fonction de comptage count_EN $f $output; # Incrémentation du nombre de fichier i=$((i+1)); done elif [ -f "$input" ]; then # Petit affichage du fichier en cours echo "Fichier traité : $input"; # Lancement de la fonction de comptage count_EN $input $output; else echo "$input is not valid (should be a file or a directory)"; exit 1; fi