Kirjoittaja Aihe: kolmen putken (|) ja EOF:n ongelma  (Luettu 2129 kertaa)

hejkki

  • Käyttäjä
  • Viestejä: 50
    • Profiili
kolmen putken (|) ja EOF:n ongelma
« : 21.11.07 - klo:04.21 »
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?
« Viimeksi muokattu: 21.11.07 - klo:04.23 kirjoittanut hejkki »

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: kolmen putken (|) ja EOF:n ongelma
« Vastaus #1 : 21.11.07 - klo:12.07 »
Kokeilepa antaa sedille parametri -u.