Intrebare

7 posts / 0 new
Last post
Marius Sirbu
Intrebare

Buna
am de rezolvat urmatoarea problema:
din mai multe fisiere .doc (M$) trebuie sa generez o singura pagina web, care sa le contina pe toate, insiruite.
am incercat sa rezolv o parte din problema folosind scriptul

#!/bin/bash
clear
#1. sterg fisierele txt si html
rm -f *.html
rm -f *.txt
echo Am sters txt-urile...

#2. generez fisierul lista.txt
ls | grep ".doc" > lista.txt
echo Am generat lista.txt....

#3. prelucrez fisierul lista.txt cu ajutorul php: php lista_mod1.txt
echo Am executat instructiunea sed....

#5. transform *.doc in *.html
for x in `cat lista_mod1.txt`; do
echo $x >> err.txt
wvHtml "$x" "$x.html"
done
less err.txt

unde, scriptul trans.php are urmatoarea structura:

Toata treaba ar fi functionala daca documentele *.doc ar avea ca denumire un singur cuvint (ex. nume.doc)
daca insa (si asa se intimpla 99% din cazuri), numele documentelor e alcatuit din mai multe cuvinte, toata sandramaua nu mai functioneaza.

Puteti sa-mi dat si mie vre-o sugestie? (nu as vrea sa preiau fiecare document in parte in oowrite, si sa fac treaba manual, fiindca sunt lunar vre-o 50 documente si asta inseamna pierdere de timp...
multumesc

cosmin
cosmin's picture
Re: Intrebare

Dacă ai nume de fişiere care conţin spaţii, atunci trebuie să înlocuieşti " " cu "\ " sau să pui tot numele între ghilimele. Am văzut că ai încercat să faci asta la pasul 4, dar tu pui ghilimele numai la sfârşit.
Încearcă una din variantele:

1) sed 's/\ /\\ /g'
2) sed 's/^\(.*\)$/\"\1\"/g'

[url=http://counter.li.org/]Linux registered user #368449[/url]

Marius Sirbu
Re: Intrebare

Multumesc Cosmin
am pus numai la sfirsit in pasul 4 pentru ca la inceput le-am pus cu php-ul
am incercat sa le pun si la sfirsit cu php-ul (insa nu stiu inca destule) si imi punea doua ghilimele la inceputul textului. De aceea am ales varianta asta

am incercat si cu instructiunea sed trimisa de tine
(sed 's/\ /\\ /g' lista_mod1.txt >lista_mod2.txt )
insa am observat ca din instructiunea cat preia fiecare cuvint, si nu fiecare linie, asa cum ar fi normal

Mai incerc
mersi inca o data

Marius
-----------------------------------------
Linux registered user # 419668

cosmin
cosmin's picture
Re: Intrebare

Nu am ştiut că ţi-ai modificat mesajul, şi de asta nu am mai răspuns. Credeam că a mers.
Ai putea încerca aşa:

#!/bin/bash
# ...
IFS=$'\n'
for x in `cat lista_mod1.txt`; do
  echo $x >> err.txt
  wvHtml "$x" "$x.html"
done
# ...

Ideea este să schimbi separatorul de câmpuri din "spaţiu, tab, newline" în "newline".

[url=http://counter.li.org/]Linux registered user #368449[/url]

Marius Sirbu
Re: Intrebare

Nu-l schimbasem, insa era o problema asemenatoare cu a lui cgherman si, cum sed zice pe romaneste, m-am bagat si eu in discutie...

Cred ca ai dreptate. Nu stiam ca se pote modifica separatorul de cimpuri (asta dovedeste ca mai am de invatat). Asa se intimplase de fapt. Lua fiecare cuvint ca pe un cimp, pe cind eu aveam nevoie de intreaga linie.
Voi incerca la servici.

Multumesc mult inca o data

Marius

Marius
-----------------------------------------
Linux registered user # 419668

cosmin
cosmin's picture
Re: Intrebare

Nici eu nu ştiam de IFS, dar m-a intrigat problema ta şi m-am documentat. Uite aşa, învăţăm împreună. :-)

[url=http://counter.li.org/]Linux registered user #368449[/url]

Marius Sirbu
Re: Intrebare

Multumesc mult.
Merge

Marius
-----------------------------------------
Linux registered user # 419668