Newer
Older
Unitex-concat / count-EN.sh
@zeynalig zeynalig on 11 Jul 2017 1 KB Add files via upload
#!/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