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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  comment enchainer des sed sur un fichier script

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment enchainer des sed sur un fichier script

n°1090286
Oeil2Lynx
Posté le 16-11-2008 à 12:59:11  profilanswer
 

Bonjour à tous je suis totalement débutant en commande linux, pas de pb toutefois en bat (msdos).
 
avec bcp de recherche sur le net, j'ai créé toute les commandes sed qui me permettent de modifier mon fichier d'origine (généré par une commande wget -O bus.txt "http://..." ), je les ai testé une apres l'autre par telnet et tout fonctionne pas de pb.
 
voici la liste de sed:

Code :
  1. sed -i '/<html>/,/Les prochains passages /d' bus.txt
  2. sed -i '/Horaires en temps /,/<\/html>/d' bus.txt
  3. sed -i s/"<td"/"=<td"/g bus.txt
  4. sed -i s/"<tr"/"$<tr"/g bus.txt
  5. sed -i s/"<[^>]*>"/""/g bus.txt
  6. sed -i '/^[[:space:]]*$/d' bus.txt
  7. sed -i 's/^[[:space:]]*//' bus.txt
  8. sed -i ':a;N;$!ba;s/\n//g' bus.txt
  9. sed -i s/"="/" "/g bus.txt
  10. sed -i 's/\$/\n/g' bus.txt
  11. sed -i '/^[[:space:]]*$/d' bus.txt
  12. sed -i 's/^[[:space:]]*//' bus.txt
  13. sed -i s/"&ecirc;"/"ê"/g bus.txt


 
si je met le tout dans un script (bus.sh) dans le meme dossier contenant bus.txt, j'obtenais une série de
: No such file or directory
: not found:
 
un collègue du taf ma dit qu'il fallait tout passer en relatif dans un script, mais rien n'y fait:
 

Code :
  1. /bin/sed -i '/<html>/,/Les prochains passages /d' /tmp/bus.txt
  2. /bin/sed -i '/Horaires en temps /,/<\/html>/d' /tmp/bus.txt
  3. /bin/sed -i s/"<td"/"=<td"/g /tmp/bus.txt
  4. /bin/sed -i s/"<tr"/"$<tr"/g /tmp/bus.txt
  5. /bin/sed -i s/"<[^>]*>"/""/g /tmp/bus.txt
  6. /bin/sed -i '/^[[:space:]]*$/d' /tmp/bus.txt
  7. /bin/sed -i 's/^[[:space:]]*//' /tmp/bus.txt
  8. /bin/sed -i ':a;N;$!ba;s/\n//g' /tmp/bus.txt
  9. /bin/sed -i s/"="/" "/g /tmp/bus.txt
  10. /bin/sed -i 's/\$/\n/g' /tmp/bus.txt
  11. /bin/sed -i '/^[[:space:]]*$/d' /tmp/bus.txt
  12. /bin/sed -i 's/^[[:space:]]*//' /tmp/bus.txt
  13. /bin/sed -i s/"&ecirc;"/"ê"/g /tmp/bus.txt


 
les cdes en relatifs fonctionnant en telnet,je pensais que le pb venait d'un verrouillage du fichier bus.txt lors de la modification par un sed -i, j'ai donc voulu raccourcir par une seule ligne grace à "sed -e" comme suit:
 

Code :
  1. /bin/sed -i -e '/<html>/,/Les prochains passages /d' -e '/Horaires en temps /,/<\/html>/d' -e s/"<td"/"=<td"/g -e s/"<tr"/"$<tr"/g -e s/"<[^>]*>"/""/g -e '/^[[:space:]]*$/d' -e 's/^[[:space:]]*//' -e ':a;N;$!ba;s/\n//g' -e s/"="/" "/g -e 's/\$/\n/g' -e '/^[[:space:]]*$/d' -e 's/^[[:space:]]*//' -e s/"&ecirc;"/"ê"/g /tmp/bus.txt


 
mais cette commande  

Code :
  1. -e ':a;N;$!ba;s/\n//g'

 
plombe le resultat attendu
 
j'ai alors scindé en 2 lignes, testé par telnet ca fonctionne très bien (et d'une rapidité je suis bluffé de la puissance) :

Code :
  1. /bin/sed -i -e '/<html>/,/Les prochains passages /d' -e '/Horaires en temps /,/<\/html>/d' -e s/"<td"/"=<td"/g -e s/"<tr"/"$<tr"/g -e s/"<[^>]*>"/""/g -e '/^[[:space:]]*$/d' -e 's/^[[:space:]]*//' /tmp/bus.txt
  2. /bin/sed -i -e ':a;N;$!ba;s/\n//g' -e  s/"="/" "/g -e 's/\$/\n/g' -e  's/^[[:space:]]*//' -e s/"&ecirc;"/"ê"/g /tmp/bus.txt


 
mais dans un script toujours même probleme not found a chaque fois donc ma retouche n'a servi à rien!
 
je rate quelque chose ou n'applique pas certaines règles pour l'écriture d'un script conforme.
 
quelqu'un aurait-il une idée?
 

mood
Publicité
Posté le 16-11-2008 à 12:59:11  profilanswer
 

n°1090323
zeblods
Posté le 16-11-2008 à 15:28:25  profilanswer
 

Ton fichier bus.txt contient quoi ?
Tu cherche à obtenir quoi exactement ?

n°1090997
sputnick
bip...bip...bip...bip...bi...b
Posté le 18-11-2008 à 21:48:03  profilanswer
 

Sinon, pour grouper des sed sans se faire ch... :


sed 's/foo/bar; s/base/zoo/; s/bar/nabé/'


 
Ou encore :


sed 's/foo/bar | s/base/zoo/ | s/bar/nabé/'


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

  comment enchainer des sed sur un fichier script

 

Sujets relatifs
[bash] trouver le fichier le plus recent dans un dossier avec findScript qui change l'extension d'un fichier
Difference rename et copie de fichier[script zsh] possibilité de faire ça en une ligne ?
Problème Démarrage Vista - Fichier NTOSKRNL.EXE manquantRedirection de script avec arguments
envoyer le flux d'erreur d'un script dans un mail[RESOLU] Suppression d'adresse IP dans un fichier
[Resolu] expect Script 
Plus de sujets relatifs à : comment enchainer des sed sur un fichier script


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