Afficher un intervalle entre 2 motifs
Bonjour,
J'ai utilisé l'expression
Code:
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:
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:
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:
1 2 3 4 5 6
|
DLIGNE01.....
LIGNE02.......
LIGNE03.......
LIGNE05..........
FLIGNE06....... |
fic2
Code:
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:
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.