Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1603 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1184592
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 13:53:33  profilanswer
 

Voila mon script :  
 
 
voir plus bas


Message édité par hazzelthorn le 09-12-2009 à 16:05:54
mood
Publicité
Posté le 08-12-2009 à 13:53:33  profilanswer
 

n°1184607
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 14:26:54  profilanswer
 

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
 
 
 

n°1184625
zecrazytux
Posté le 08-12-2009 à 15:12:07  profilanswer
 

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
n°1184640
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 15:31:10  profilanswer
 

[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
n°1184647
zecrazytux
Posté le 08-12-2009 à 15:48:00  profilanswer
 

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
n°1184649
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 15:53:32  profilanswer
 

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
n°1184651
zecrazytux
Posté le 08-12-2009 à 15:55:57  profilanswer
 

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
n°1184654
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 15:56:36  profilanswer
 

ma question comment ca, le but de ce script ?

n°1184656
zecrazytux
Posté le 08-12-2009 à 15:57:26  profilanswer
 

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
n°1184657
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 15:58:49  profilanswer
 

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

mood
Publicité
Posté le 08-12-2009 à 15:58:49  profilanswer
 

n°1184661
zecrazytux
Posté le 08-12-2009 à 16:03:54  profilanswer
 

[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
n°1184667
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 16:10:17  profilanswer
 

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

n°1184672
zecrazytux
Posté le 08-12-2009 à 16:15:41  profilanswer
 

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
n°1184675
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 16:21:32  profilanswer
 

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
n°1184677
zecrazytux
Posté le 08-12-2009 à 16:27:15  profilanswer
 

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
n°1184679
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 16:35:56  profilanswer
 

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

n°1184680
zecrazytux
Posté le 08-12-2009 à 16:40:20  profilanswer
 

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
n°1184681
hazzelthor​n
Payday vador
Posté le 08-12-2009 à 16:41:04  profilanswer
 

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

n°1184682
deK
watching for beerz on the wing
Posté le 08-12-2009 à 16:43:13  profilanswer
 

[:alerte wedge]


---------------
Feed HA/V          
n°1184826
hazzelthor​n
Payday vador
Posté le 09-12-2009 à 11:48:01  profilanswer
 

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
n°1184854
hazzelthor​n
Payday vador
Posté le 09-12-2009 à 14:38:09  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 

Sujets relatifs
[Résolu] Imprimante HP et fedora 12 : help[RESOLU]Help transfert FXP serv. FTP Lenny <-->freebox HD
Rewriting - Rediriger un sous domaine quand le répertoire n'existe pas[Help CUPS]Programme de régulation d'impression
Virus? Rootkit? Deconnexion intempestive, Help![Logrotate ] need help!
modem routeur sous firmware Linux 2.6.x, ça existe ?Vitesse de transfert faible entre deux disques durs, need help.
[ubuntu/windows] Enlever le dual boot pour ne booter que sur linux 
Plus de sujets relatifs à : [KSH]Enlever $ situé en fin de chaine s'il existe [HELP]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR