Moi
Kokeilin guuglettaa, mut en keksinyt sopivaa hakusanaa...
eli tilanne on tämä:
Palvelimella on jatkuvasti kasvava tekstitiedosto (irc-log) jota haluan käsitellä lennosta (sed, tr tms) ja sen jälkeen tiedosto tulee lukea espeak:lla kotikoneella.
Yritin tätä:
palvein# tail -f tiedosto | sed -e 's/\(.*\)>//g' | nc -l -p 1234
eli luetaan tiedostoa loputtomasti (jäädään odottamaan sen kasvamista) ja poistetaan kaikki > merkkiä edeltävä teksti, jonka jälkeen syötetään se verkon yli kotikoneelle
kotikone# nc palvelin 1234 | espeak -v fi
luetaan tiedosto palvelimelta verkon yli ja syötetään se espeakille
Mutta mitään ei tapahdu.
Jos jätän palvelimen puolelta tuon sed-komennon pois, kaikki toimii, mutta espeak puhuu sellaista mitä en halua tulevan puhuttavaksi.
eli tämä siis toimii:
palvelin# tail -f tiedosto | nc -l -p 1234
kotikone# nc palvelin 1234 | espeak -v fi
ihan sama kummassa päässä tuon sedin ajaa, ei pelitä. Tarkistaakseni että kaikki komennot ovat oikein, voin tehdä jonkin seuraavista:
palvein# tail tiedosto | sed -e 's/\(.*\)>//g' | nc -l -p 1234
kotikone# nc palvelin 1234 | espeak -v
näin tehtynä palvelimella olevasta tiedostosta luetaan viimeiset rivit kotikoneella ja toiminto loppuu siihen (huomaa puuttuva -f vipu tailista)
toinen koe:
palvelin# tail -f tiedosto | nc -l -p 1234
kotikone# nc palvelin 1234 | espeak -v fi
Tässäkin tapauksessa ääntä kuuluu, ja jatkuvasti, tiedostoa luetaan edelleen sen kasvaessa, mutta sedillä ei sitä päästä käsittelemään.
tässä tapauksessa on ihan sama, käytänkö sediä vai tr '>' '\n' | grep -v '<' yhden sed-komennon tilalla, koska tämäkään ei toimi.
Eli siis, onko ideoita, miten saisin toimimaan putkituksen niin että voin sedillä muokata lennosta tietovirtaa?