Afficher des ligne par rapport à un mot
wtfunix
Messages postés
52
Statut
Membre
-
wtfunix Messages postés 52 Statut Membre -
wtfunix Messages postés 52 Statut Membre -
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 :
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
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:
- Afficher des ligne par rapport à un mot
- Partager des photos en ligne - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Afficher mot de passe wifi android - Guide
- Aller à la ligne excel - Guide
2 réponses
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
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
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
!$$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