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 :
- sed -i '/<html>/,/Les prochains passages /d' bus.txt
- sed -i '/Horaires en temps /,/<\/html>/d' bus.txt
- sed -i s/"<td"/"=<td"/g bus.txt
- sed -i s/"<tr"/"$<tr"/g bus.txt
- sed -i s/"<[^>]*>"/""/g bus.txt
- sed -i '/^[[:space:]]*$/d' bus.txt
- sed -i 's/^[[:space:]]*//' bus.txt
- sed -i ':a;N;$!ba;s/\n//g' bus.txt
- sed -i s/"="/" "/g bus.txt
- sed -i 's/\$/\n/g' bus.txt
- sed -i '/^[[:space:]]*$/d' bus.txt
- sed -i 's/^[[:space:]]*//' bus.txt
- sed -i s/"ê"/"ê"/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 :
- /bin/sed -i '/<html>/,/Les prochains passages /d' /tmp/bus.txt
- /bin/sed -i '/Horaires en temps /,/<\/html>/d' /tmp/bus.txt
- /bin/sed -i s/"<td"/"=<td"/g /tmp/bus.txt
- /bin/sed -i s/"<tr"/"$<tr"/g /tmp/bus.txt
- /bin/sed -i s/"<[^>]*>"/""/g /tmp/bus.txt
- /bin/sed -i '/^[[:space:]]*$/d' /tmp/bus.txt
- /bin/sed -i 's/^[[:space:]]*//' /tmp/bus.txt
- /bin/sed -i ':a;N;$!ba;s/\n//g' /tmp/bus.txt
- /bin/sed -i s/"="/" "/g /tmp/bus.txt
- /bin/sed -i 's/\$/\n/g' /tmp/bus.txt
- /bin/sed -i '/^[[:space:]]*$/d' /tmp/bus.txt
- /bin/sed -i 's/^[[:space:]]*//' /tmp/bus.txt
- /bin/sed -i s/"ê"/"ê"/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 :
- /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/"ê"/"ê"/g /tmp/bus.txt
|
mais cette commande
Code :
- -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 :
- /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
- /bin/sed -i -e ':a;N;$!ba;s/\n//g' -e s/"="/" "/g -e 's/\$/\n/g' -e 's/^[[:space:]]*//' -e s/"ê"/"ê"/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?