Bonjour,

J'ai un fichier test1 , dans lequel je souhaite rajouter la même chaine de caractére pour chaque ligne " 001 TEST " pour créer mon fichier test2, à partir de mon 12 ième caractére de début de ligne , en rajoutant la chaine sur 20 caractères " 001 TEST " et intercaler la suite sur cette même.

fichier test1 :TOKAS180630 MACHINE A 00000
TOKAS180630 MACHINE A 00000
TOKAS180630 MACHINE B 0000044444

Fichier test 2:
TOKAS180630 001 TEST MACHINE A 00000
TOKAS180630 001 TEST MACHINE B 0000044444

Le fichier est assez volumineux. Il faudrait quelques chose de simple.

Dans un précedent script, j'avais rajouté des fins de lignes par des 0. (voir ci-dessous). Mais là je cale.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#----------------------------------------------------------------------------------------
#--Rajout des caracteres 0 en fin de lignes pour combler les blancs sur 1500 caractere---
#----------------------------------------------------------------------------------------
cd ${RepOut}
echo "Chemin Out : ${RepOut}"
NbreMaxCar=1499
ls *MACHINE* 2>/dev/null | egrep -v "CRA" | while read UnFichier
do
        cat ${UnFichier} | while IFS="" read UneLigne
        do
 
                if [ ${NbreMaxCar} -gt ${#UneLigne} ] ; then
                        printf "%s%0$((${NbreMaxCar}-${#UneLigne}))i\n" "$UneLigne" >> ${UnFichier}.tmp
                else
                        echo "Erreur Ligne superieur a $NbreMaxCar  caracteres"
                        printf "%s\n" "$UneLigne"                                   >> ${UnFichier}.tmp
                fi
 
        done
 
        mv ${UnFichier}.tmp ${UnFichier}
done

Merci pour votre aide.