[KSH]Enlever $ situé en fin de chaine s'il existe [HELP]

Enlever $ situé en fin de chaine s'il existe [HELP] [KSH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 08-12-2009 à 13:53:33    

Voila mon script :  
 
 
voir plus bas


Message édité par hazzelthorn le 09-12-2009 à 16:05:54
Reply

Marsh Posté le 08-12-2009 à 13:53:33   

Reply

Marsh Posté le 08-12-2009 à 14:26:54    

Petite modif chaque fois que j'ai une ligne vide entre mes bloc de texte je veux afficher par exemple "toto"
j'ai déjà essayé ça :  
 
 
#!/bin/ksh
 
 
IsJob=0
IsApp=0
IsCyclique=0
FichierSortie=/home4/dpineau/blabla
IFS="
"
rm $FichierSortie
 
for Line in `cat /home4/dpineau/export_vtom.exp`
do
#je teste si c'est une appli
if [ `echo $Ligne | grep app: | wc -l` -eq 1 ] ;
 then  
  IsApp=1 ; IsJob=1
fi  
# je teste si c'est un job
if [ `echo $Ligne | grep job: | wc -l` -eq 1 ] ;
 then
  IsJob=1 ; IsApp=0
fi
# je teste si c'est un job et si c'est cyclique
if [ `echo $IsJob` -eq 1 ] && [ `echo $Ligne | grep cyclique=oui | wc -l` -eq 1 ] ;
 then IsCyclique=1
 else IsCyClique=0
fi
# je teste si c'est un job, si c'est cyclique et si ca rempli ces deux condition j'ecris toto a la place de la ligne vide
if [ `echo $Line | grep  ^$ | wc -l` -eq 1 ] && [ `echo $IsJob` -eq 1 ] && [ `echo $Ligne | grep cyclique=oui | wc -l` -eq 1 ] ;  
 then echo "toto">>$FichierSortie
 else echo $Line>>$FichierSortie
fi
 
echo $Line
 
 
done
 
 
 

Reply

Marsh Posté le 08-12-2009 à 15:12:07    

tu bosses pour SFR ?
 
c'est quoi ce truc...
 
bon aller regarde ça 5s, http://paste.zecrazytux.net/.08-12 [...] ge.sh.html
 
tu devrais réfléchir avant de coder, vérifier qu'une ligne vide contient job et cyclique=oui, ça risque pas d'arriver...
 
edit: mon truc marche pas hein, il va pas faire ce que tu souhaite, c'est un début de correction


Message édité par zecrazytux le 08-12-2009 à 15:12:45

---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 15:31:10    

[debut du HS]
non je bosse pour la boite qui edite le logiciel VTOM et qui est exploité notamment par SFR :)
 
[FIN du HS ]  
 
#!/bin/ksh
 
 
IsJob=0
IsApp=0
IsCyclique=0
FichierSortie=/home4/dpineau/blabla
IFS="
"
rm $FichierSortie
 
for Line in `cat -vte /home4/dpineau/BINDA.exp`
do
#je teste si c'est une appli
if [ `echo $Line | grep app: | wc -l` -eq 1 ] ;
 then  
  IsApp=1 ; IsJob=0
fi  
# je teste si c'est un job
if [ `echo $Line | grep job: | wc -l` -eq 1 ] ;
 then
  IsJob=1 ; IsApp=0
fi
# je teste si c'est un job et si c'est cyclique
if [ `echo $IsJob` -eq 1 ] && [ `echo $Line | grep cyclique=oui | wc -l` -eq 1 ] ;
 then IsCyclique=1
  else IsCyclique=0
fi
# je teste si c'est un job, si c'est cyclique et si ca rempli ces deux condition j'ecris toto a la place de la ligne vide
echo $IsJob
echo $IsCyclique
 
if [ `echo $IsJob` -eq 1 ] && [ `echo $IsCyclique` -eq 1 ] && [ `echo $Line | grep  ^$ | wc -l` -eq 1 ] ;  
 then print "toto">>$FichierSortie
 else echo $Line>>$FichierSortie
fi
 
echo $Line
 
 
done
 
 
ds ce script la trace est bonne et j'arrive a afficher ce que j'veux mais sans poser mes conditions  
 
==> [ `echo $IsCyclique` -eq 1 ] && [ `echo $Line | grep  ^$ | wc -l` -eq 1 ]


Message édité par hazzelthorn le 08-12-2009 à 15:36:35
Reply

Marsh Posté le 08-12-2009 à 15:48:00    

relis mon bout de machin, et prends ton temps. C'est horrible ce que tu écris là


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 15:53:32    

c'est horrible ? mais ton truc avec les fichier temp j'en ai pas besoin ma trace marche [ksh -vx ./script.sh]   alors peux tu m'expliquer pourquo ic'est horrible ? j'demande qu'à apprendre :o
 
EDIT : j'suis qu'un pauvre etudiant en alternance et de surcroit en 1ere année  :sweat:


Message édité par hazzelthorn le 08-12-2009 à 15:54:12
Reply

Marsh Posté le 08-12-2009 à 15:55:57    

C'est horrible car tu pipe et fait des substitutions de commandes inutiles, que cest illisible...
 
ça "marche" mais c'est très moche.
 
et sinon ta question, c'est quoi ?
 
edit: les fichiers temp c'est parce que moi j'ai pas de /home4 machin et j'ai un minimum testé mon code écrit de tête avant de l'envoyer)


Message édité par zecrazytux le 08-12-2009 à 15:57:03

---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 15:56:36    

ma question comment ca, le but de ce script ?

Reply

Marsh Posté le 08-12-2009 à 15:57:26    

hazzelthorn a écrit :

ma question comment ca, le but de ce script ?


 
en quoi puis je t'être utile ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 15:58:49    

je capte pas pourquoi mes deux premieres conditions dans mon  
 
if [ `echo $IsJob` -eq 1 ] && [ `echo $IsCyclique` -eq 1 ] && [ `echo $Line | grep  ^$ | wc -l` -eq 1 ] ;  
 then print "toto">>$FichierSortie
 else echo $Line>>$FichierSortie
 
 
 
ne sont jamais prise en compte et m'affiche jamais toto en sortie...  
alors que si j'lai vire ben pour chaque ligne vide ben ca me fout toto

Reply

Marsh Posté le 08-12-2009 à 15:58:49   

Reply

Marsh Posté le 08-12-2009 à 16:03:54    

[quotemsg=1184657,10,278652]je capte pas pourquoi mes deux premieres conditions dans mon  
 
if [ `echo $IsJob` -eq 1 ] && [ `echo $IsCyclique` -eq 1 ] && [ `echo $Line | grep  ^$ | wc -l` -eq 1 ] ;  
 then print "toto">>$FichierSortie
 else echo $Line>>$FichierSortie
 
revois les bases du shell, et surtout les tests...
 
et regarde ce que je t'ai écris. vraiment
 
est ce que ça rrive que  
 
- $IsJob soit égal à 1 (la ligne contient 'job:')
- $IsCyclique soit égal à 1 (la ligne contient 'cyclique=oui')
- que la ligne soit vide
 
ça c'est de la logique.


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 16:10:17    

à part faire ca :
 
if [ $Line = "" -a $IsJob -eq 1 -a $IsCyClique -eq 1 ] ;  
 
 qui ne fonctionne pas j'vois pas....

Reply

Marsh Posté le 08-12-2009 à 16:15:41    

hazzelthorn a écrit :

à part faire ca :
 
if [ $Line = "" -a $IsJob -eq 1 -a $IsCyClique -eq 1 ] ;  
 
 qui ne fonctionne pas j'vois pas....


 
 
comment une ligne vide peut elle contenir "job:" et "cyclique=oui" ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 16:21:32    

aaah je comprends :d  
 
oui mais j'arrive pas à le formuler et il est deja 16h20.. bourdel j'ai pas vu le temps passer.
 
J'comprends ta logique (et par la mm occasion mon pb pour le dernier if)
 
 
if [ `echo $Line | grep  ^$ | wc -l` -eq 1 ] ;  me permet de voir si c'est une ligne vide
 
 mais les deux conditions concernant si c'est un  job et cyclique= oui  sont des paramètres que je parse qq lignes plus haut...  
 
la trace me donne bien ce que j'veux pourtant....

Message cité 1 fois
Message édité par hazzelthorn le 08-12-2009 à 16:22:03
Reply

Marsh Posté le 08-12-2009 à 16:27:15    

hazzelthorn a écrit :

aaah je comprends :d  
 
oui mais j'arrive pas à le formuler et il est deja 16h20.. bourdel j'ai pas vu le temps passer.


tu finis à 17h toi ? :)
 
 

Citation :


 
if [ `echo $Line | grep  ^$ | wc -l` -eq 1 ] ;  me permet de voir si c'est une ligne vide


 
:gerbe:
 
if [ -n "$var" ]; then
 
fi
 
 
 

Citation :


 
 mais les deux conditions concernant si c'est un  job et cyclique= oui  sont des paramètres que je parse qq lignes plus haut...  
 
la trace me donne bien ce que j'veux pourtant....


 
ah oui autant pour moi, tu remets pas à vide dans la boucle (j'ai aussi mes excuses, je bosses à coté, sisi, je need coffee, il fait sombre... :D)


Message édité par zecrazytux le 08-12-2009 à 16:27:33

---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 16:35:56    

j'tai add sur msn  si tu veux ce soir si t'es dispo ou par mail :d  et oui j'termine a 17h :o

Reply

Marsh Posté le 08-12-2009 à 16:40:20    

hazzelthorn a écrit :

j'tai add sur msn  si tu veux ce soir si t'es dispo ou par mail :d  et oui j'termine a 17h :o


 
eh ben... espece de wedge

Message cité 1 fois
Message édité par zecrazytux le 08-12-2009 à 16:40:29

---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 08-12-2009 à 16:41:04    

zecrazytux a écrit :


 
eh ben... espece de wedge


 
 
ben quoi :d 9h-17h ca fait du 35h par semaine :d et ce script si j'veux pas me faire taper dessus j'dois le finir :d :o

Reply

Marsh Posté le 08-12-2009 à 16:43:13    

[:alerte wedge]


---------------
(old) Feed HA/V          
Reply

Marsh Posté le 09-12-2009 à 11:48:01    

Alors voilà ou j'en suis  
 
#!/bin/ksh
 
clear
IsJob=0
IsApp=0
IsCyclique=0
FichierSortie=/home4/dpineau/blabla
JobName=$Line
 
rm $FichierSortie
 
for Line in `cat -vte /home4/dpineau/BINDA.exp`
do
#je teste si c'est une appli
if [ `echo $Line | grep app: | wc -l` -eq 1 ] ;
 then  
  IsApp=1 ; IsJob=0
fi  
# je teste si c'est un job
if [ `echo $Line | grep job: | wc -l` -eq 1 ] ;
 then
  IsJob=1 ; IsApp=0 ; JobName=`echo $Line`  
   echo "MonJob: " $JobName
fi
 
# je teste si c'est un job et si c'est cyclique
if [ `echo $IsJob` -eq 1 ] ;
 then  
  if [ `echo $Line | grep cyclique=oui | wc -l` -eq 1 ] ;
   then IsCyclique=1  
   else IsCyclique=0
   
  fi
fi
# je teste si c'est un job, si c'est cyclique et si ca rempli ces deux condition j'ecris toto a la place de la ligne vide
 
echo $IsCyclique
 
if [ `echo $IsJob` -eq 1 ] && [ `echo $IsCyclique` -eq 1 ] && [ `echo $Line | grep -e '^[$]' | wc -l` -eq 1 ] ;  
 then echo "toto\n">>$FichierSortie  
 else echo $Line>>$FichierSortie
fi
 
echo $Line
 
 
done
 
 
 
Mon dernier pti pb et après le script marche ! c'est de poser dans  
 
if [ `echo $IsJob` -eq 1 ] ;
 then  
  if [ `echo $Line | grep cyclique=oui | wc -l` -eq 1 ] ;
   then IsCyclique=1  
   else IsCyclique=0
   
  fi
fi
 
 
Si c'est un job alors la variable IsCyclique reste bloqué à 1  et est valable jusqu'a la prochaine ligne [job:....... que mon script parcoure


Message édité par hazzelthorn le 09-12-2009 à 11:50:04
Reply

Marsh Posté le 09-12-2009 à 14:38:09    

Et voila le script complet qui marche merci a ceux qui m'ont aidé :)
 
#!/bin/ksh
 
clear
IsJob=0
IsApp=0
IsCyclique=0
IsDemande=0
FichierSortie=/home4/dpineau/blabla
JobName=$Line
IFS="
"
 
rm $FichierSortie
 
for Line in `cat -vte /home4/dpineau/BINDA.exp`
do
 
#je teste si c'est une appli
if [ `echo $Line | grep app: | wc -l` -eq 1 ] ;
 then  
  IsApp=1 ; IsJob=0
fi  
 
# je teste si c'est un job
if [ `echo $Line | grep job: | wc -l` -eq 1 ] ;
 then
  IsJob=1 ; IsApp=0 ; JobName=`echo $Line` ; IsCyclique=0 ; IsDemande=0
  echo "JobName : " $JobName  
fi
 
# je teste si c'est un job  
if [ `echo $IsJob` -eq 1 ] ;
 then  
 
#si c'est cyclique  
  if [ `echo $Line | grep cyclique=oui | wc -l` -eq 1 ] ;
   then IsCyclique=1  
   CurrentJob=`echo $JobName`
   echo "CurrentJOb" $CurrentJob  
  fi
 
#si c'est demande
  if [ `echo $Line | grep type_periodicite=demande | wc -l` -eq 1 ] ;
   then IsDemande=1  
  fi
fi
 
# je teste si c'est un job, si c'est cyclique et si ca rempli ces deux condition j'ecris toto a la place de la ligne vide
echo "Cyclique :" $IsCyclique
echo "Demande : " $IsDemande
 
# je teste si c'est un job
if  ([ `echo $IsJob` -eq 1 ] && [ `echo $Line | grep -e '^[$]' | wc -l` -eq 1 ]) ;
 
# je teste si c'est un job et une demande
 then if  [ `echo $IsDemande` -eq 1 ] ;
   then echo "toto\n">>$FichierSortie
   
# je teste si c'est un job et cyclique alors j'ecris "toto"  
   else if [ `echo $IsCyclique` -eq 1 ] ;
    then  
     echo "toto\n">>$FichierSortie
     
# je teste si c'est un job et non-cyclique alors j'écris "tata"
    else echo "tata\n">>$FichierSortie
    fi
  fi
fi
echo $Line  >>$FichierSortie
done
 
 
Mon dernier pb est d'enlever les $ généré par le cat -vte pour rendre le fichier export presentable
si qq1 sait manier cut ou sed  une aide serait bienvenue


Message édité par hazzelthorn le 09-12-2009 à 16:06:51
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed