Bonjour,

J'ai utilisé l'expression
Code : Sélectionner tout - Visualiser dans une fenêtre à part
sed -n /^D/,/^F/'p' fic_in > fic_out
pour extraire les enregistrements compris entre la ligne qui débute par D et celle qui débute par F.

Si j'ai le cas d'un fichier "fic_in"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
DLIGNE01.....
LIGNE02.......
LIGNE03.......
LIGNE05..........
FLIGNE06.......
DLIGNE07.....
LIGNE08.......
LIGNE09.......
LIGNE10..........
FLIGNE11.......
Le problème est que le résultat obtenu avec le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
sed -n /^D/,/^F/'p' fic_in > fic_out
équivaut au contenu du fichier "fic_in". Autrement dit, le fic_out est identique à fic_in (rien de surprenant compte tenu du code).

Ce que je cherche à faire, c'est avoir deux fichiers pour le coup :

fic1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DLIGNE01.....
LIGNE02.......
LIGNE03.......
LIGNE05..........
FLIGNE06.......
fic2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DLIGNE07.....
LIGNE08.......
LIGNE09.......
LIGNE10..........
FLIGNE11.......
Cette manière de faire va me permettre ensuite de rejeter les fichiers qui ne respectent pas la règle : entête doit toujours commencée par D et la fin du fichier par F. Ce qui peut correspondre au code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
D=`head -1 fic1 | cut -c 1-1`
F=`tail -1 fic1 | cut -c 1-1`
if [[ ${D} == "D" ]] && [[ ${F} == "F" ]] 
  then 
       "Fic à garder"
  else
        "Fic à rejeter"
fi
Avez-vous une idée ?
Merci infiniment pour votre aide.