Script concaténer fichier

Résolu
labas -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je voudrais écrire un script shell qui pour tous les fichiers de format .txt se trouvant dans un répertoire donné, on doit :
1. regarder si le fichier contient « Version : »,
2. alors on compte le nombre de ligne (nb_ligne) qu'il contient excepté la première et la dernière
3. puis on le concaténer dans un fichier et enfin on enrichie un fichier log (nb-ligne, date, fichier) et on déplace le fichier dans répertoire-traiter.
4. sinon (le fichier ne contient pas version) on le déplace dans répertoire-erreur
Exemple de fichier correct:
E;E;E;E
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
Version :
On doit concaténer dans all_file.txt avec nb_ligne=3 faire un fichier log
On le copie dans fichier correct

1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5

Exemple de fichier incorrect:
E;E;E;E
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
On le déplace dans le répertoire erreur en renseignant le log

TROUVE=0
Début
for fichier in *.TXT do
echo $fichier
echo grep -v "^$" $fichier | wc -l
if [ $? -eq $TROUVE ] then
$nombre_fichier=wc -l $fichier
nomfichier=$fichier
cp $nomfichier $CHEMIN/rep_traiter/
cat $nomfichier > $CHEMIN/rep_operats/FTIERS_ALL.txt
let "nombre_fichier += 1"

else
mv $nomfichier $CHEMIN/rep_erreurs/$nomfichier
fi

done

Merci de lire ce post

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Ton énoncé est un peu incohérente par rapport à ton script ;-\

    Je verrai plus un truc dans ce genre (j'ai pas testé par contre) :
    #! /bin/bash
    
    # Définition variables
    DATE=$(date "+%d/%m/%Y")
    
    for fichier in "*.TXT"
    do
            grep "Version :" "$fichier" >/dev/null
            retval=$?
            case "$retval" in
            0)      nbre_ligne=$(( $(cat $fichier | wc -l) - 2 ))
                    sed -n '1d;$d;p' "$fichier" >> $CHEMIN/rep_operats/FTIERS_ALL.txt
                    echo "$fichier : $nbre_ligne : $DATE" >> $CHEMIN/rep_operats/FTIERS_ALL.txt
                    mv -f "$fichier" $CHEMIN/rep_traiter/
                    ;;
            1)      mv -f "$fichier" $CHEMIN/rep_erreurs/
                    ;;
            *)      echo "ERREUR"
                    exit 3
                    ;;
            esac
    done
    ;-))
    0
  2. labas
     
    Problème résolu, merci
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      De rien, mais peut-on avoir un aperçu s'il te plaît, merci ?
      0