Script concaténer fichier

Résolu/Fermé
labas - 22 janv. 2008 à 15:37
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 22 janv. 2008 à 18:27
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
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 janv. 2008 à 16:38
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
Problème résolu, merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 janv. 2008 à 18:27
De rien, mais peut-on avoir un aperçu s'il te plaît, merci ?
0