[Shell-script] supprimer partie de texte
Résolu
Phil
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour à tous !
J'ai plusieurs fichiers se présentant comme ceci :
(...) Signifie que le fichier n'est pas fini, mais le reste de celui-ci ne m'intéresse pas.
Je voudrais effacer toutes les lignes allant de la première occurance de "2004" jusqu'à la dernière. En conservant le début du fichier et la fin.
dans mon exemple cela donnerait :
je suis novice en script et je ne trouve pas dans les différents man comment réaliser cette action.
Si quelqu'un à une idée....
Merçi d'avance.
J'ai plusieurs fichiers se présentant comme ceci :
BEGIN GSE2.0
MSG_TYPE DATA
MSG_ID 040119223052 EMSC
DATA_TYPE BULLETIN GSE2.0
EVENT 20040119223052
Date Time Latitude Longitude Depth Ndef Nsta Gap Author
rms OT_Error Smajor Sminor Az Err mdist Mdist
2004/01/19 22:30:58.0 33.9620 -14.8260 10.0 f 22 12 177 INMG
0.30 +- 1.94 13.2 4.7 120 1.55 8.71
2004/01/19 22:30:58.7 33.9961 -14.8244 33.0 59 43 151 MDD
0.92 +- 0.70 13.7 5.9 126 1.57 10.45
2004/01/19 22:31:02.8 34.2300 -14.4600 30.0 18 9 318 CNRM
4.89 8.52
2004/01/19 22:30:50.7 34.3095 -15.4805 0.0 19 16 188 MDD
1.18 +- 1.58 19.4 10.4 105 5.85 10.27
2004/01/19 22:30:54.4 34.0390 -14.9970 10.0 52 28 214 NEIC
1.16 11.8 7.0 5.66 16.76
2004/01/19 22:31:06.9 34.7125 -14.6205 10.0 f 12 8 336 LDG
0.55 +- 0.69 21.8 10.9 156 6.46 16.15
2004/01/19 22:30:51.7 34.1361 -15.0856 10.0 f 60 51 193 EMSC
1.02 +- 0.18 4.3 2.1 87 1.50 16.83
(...)
(...) Signifie que le fichier n'est pas fini, mais le reste de celui-ci ne m'intéresse pas.
Je voudrais effacer toutes les lignes allant de la première occurance de "2004" jusqu'à la dernière. En conservant le début du fichier et la fin.
dans mon exemple cela donnerait :
BEGIN GSE2.0
MSG_TYPE DATA
MSG_ID 040119223052 EMSC
DATA_TYPE BULLETIN GSE2.0
EVENT 20040119223052
Date Time Latitude Longitude Depth Ndef Nsta Gap Author
rms OT_Error Smajor Sminor Az Err mdist Mdist
2004/01/19 22:30:51.7 34.1361 -15.0856 10.0 f 60 51 193 EMSC
1.02 +- 0.18 4.3 2.1 87 1.50 16.83
(...)
je suis novice en script et je ne trouve pas dans les différents man comment réaliser cette action.
Si quelqu'un à une idée....
Merçi d'avance.
Phil
A voir également:
- [Shell-script] supprimer partie de texte
- Supprimer rond bleu whatsapp - Guide
- Classic shell - Télécharger - Personnalisation
- Impossible de supprimer une page word - Guide
- Script vidéo youtube - Guide
- Impossible de supprimer un fichier - Guide
3 réponses
Je viens de tester le commande :
Je pensais que ça allait effacer les lignes comprisent entre ces deux motifs. Mais ça efface toutes celles comprenant le motif "2004".
Phil.
sed '/2004/,/2004/d' mon_fichier > nouveau_fichier
Je pensais que ça allait effacer les lignes comprisent entre ces deux motifs. Mais ça efface toutes celles comprenant le motif "2004".
Phil.
Salut,
Essaie ça :
Si c'est le résultat escompté, rajoute l'option "-i.bak" si ta version de "sed" le permet (> 4.0), pour modifier le fichier d'entrée, sinon passe par un fichier temporaire...
Essaie ça :
sed '/^2004/ {/EMSC[ ]*$/!{N;N;d}}' fichierEn espérant qu'il ne faille garder que la ligne se finissant par "EMSC".
Si c'est le résultat escompté, rajoute l'option "-i.bak" si ta version de "sed" le permet (> 4.0), pour modifier le fichier d'entrée, sinon passe par un fichier temporaire...