Afficher des ligne par rapport à un mot

Fermé
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014 - 7 août 2014 à 16:35
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014 - 12 août 2014 à 14:39
Bonjour j'aimerai savoir comment afficher deux lignes par rapport à un mot. Par exemple, le fichier " parametre1" est le suivant :

nom: 2014_MA6
date : 2014-07-23T00:00:00
step: 5min
nombre de step: 300
fin de step 1
2014-07-23T01:00:00.00 16 42 35.95507 +54 55 43.1304 0.048711400 20.90 84.17 93.09 0.4118E+00 0.6414E+01 0.00027
fin de step 2

nom : 3981_88
date : 2014-08-12T00:00:00
step: 5min
nombre de step: 300
fin de step 1
Miriade.ephemcc: computeEphemeris: Asteroid 3981 88 not found in the database: /astrodata/ASTORB/astorb.dat -> skipped
fin de step 2

nom : 3574_39
date : 2015-01-26T00:00:00
step: 5min
nombre de step: 300
fin de step 1
Miriade.ephemcc: computeEphemeris: Asteroid 3574 39 not found in the database: /astrodata/ASTORB/astorb.dat -> skipped
fin de step 2


et j'aimerai dire que si il est affiché Asteroid not found in the database alors on affiche le nom la date le step et le nombre de step. Ces parametres sont déjà défini dans un script par les appellations $asteroid $date $step $nbstep

J'ai donc écris le programme suivant :

cat parametre1 | awk '{ 
if (grep not found)
{
print $asteroid $date $step $nbstep
}}'> ok
cat ok

Cependant rien ne m'affiche, je sais que c'est au niveau du "grep" que ça ne fonctionne pas pourtant lorsque que l'on veut sélectionner une ligne comportant un mot on utilise bien grep ' motvoulu '..

Merci d'avance
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
7 août 2014 à 16:47
Salut,

$ grep -B5 'Asteroid.* not found' fichier | grep -v 'Asteroid\|fin'
nom : 3981_88
date : 2014-08-12T00:00:00
step: 5min
nombre de step: 300
--
nom : 3574_39
date : 2015-01-26T00:00:00
step: 5min
nombre de step: 300

0
dubcek Messages postés 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
8 août 2014 à 09:29
hello
$ awk '{t[NR]=$0} /Asteroid.*not found/ {for(n=5; n>1;)print t[NR-n--]; print ""}' fichier
nom : 3981_88
date : 2014-08-12T00:00:00
step: 5min
nombre de step: 300

nom : 3574_39
date : 2015-01-26T00:00:00
step: 5min
nombre de step: 300
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
8 août 2014 à 09:34
Salut dubcek,

Tiens j'avais fait ça :

awk 'BEGIN { RS = "\n\n"; FS=OFS= "\n" } /Asteroid.*not found/ { print $1,$2,$3,$4,"--"}'

Qu'est-ce qu'il en pense notre pro du awk ? ;-)
0
dubcek Messages postés 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
8 août 2014 à 10:21
toutes les méthodes qu fonctionnent sont bonnes...
je me méfie des lignes vides comme séparateurs, on n'est jamais sur qu'elles restent vides ...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
8 août 2014 à 10:23
Merci bien ;-)
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
8 août 2014 à 11:01
Merciiiiii beaucoup c'est parfait !!! =D
Vous êtes des pros de la prog !!
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
12 août 2014 à 14:39
Une dernière petite question, comment pourrais je faire pour afficher le nom, la date le step et le nombre de step dans une variable? En fait je voudrai lancer un autre fichier " horizon" à partir de celui ci. Le fichier "horizon" se présente sous cette forme :

!$$SOF
COMMAND= 'DES=2011 PU1'
CENTER= '500@399'
MAKE_EPHEM= 'YES'
TABLE_TYPE= 'OBSERVER'
START_TIME= '2014-07-16'
STOP_TIME= '2014-07-18'
STEP_SIZE= '5 m'
CAL_FORMAT= 'CAL'
TIME_DIGITS= 'MINUTES'
ANG_FORMAT= 'HMS'
OUT_UNITS= 'KM-S'
RANGE_UNITS= 'AU'
APPARENT= 'AIRLESS'
SOLAR_ELONG= '0,180'
SUPPRESS_RANGE_RATE= 'NO'
SKIP_DAYLT= 'NO'
EXTRA_PREC= 'NO'
R_T_S_ONLY= 'NO'
REF_SYSTEM= 'J2000'
CSV_FORMAT= 'NO'
OBJ_DATA= 'YES'
QUANTITIES= '1,3,9,20,23,24'
!$$EOF

Les données en gras sonr respectivement le nom et la date et le step , comment pourrais je faire pour remplacer le nom et la date et le step dans le fichier "horizon" pour chacun des paramètre suivant que j'obtenais avant:
nom : 3981_88
date : 2014-08-12T00:00:00
step: 5min
nombre de step: 300

nom : 3574_39
date : 2015-01-26T00:00:00
step: 5min
nombre de step: 300

Merci d'avance
0