Tekstin muokkaus

Pitäisi noin 9Mt kokoisessa tiedostossa etsiä tekstistä tietyt sanat, ja lisätä rivinvaihto niiden eteen.

Onnistuuko tämä jotenkin helposti?

Eli pitäisi tekstissä löytää kaikki sanat jotka esiintyvät kaksi kertaa peräkkäin ja niiden välissä on kaksoispiste.

"tämä on teksti moi: moi ja tämä jatkuu vielä"

Eli pitäisi näiden "moi: moi" eteen lisätä rivinvaihto, jotta lopputulos olisi:

"tämä on teksti
moi: moi ja tämä jatkuu vielä"

Teksti on utf-8.
10440
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

minä en osaa, mutta tiedän että tuo menee loistavasti esimerkiksi pikkuisella perlinpätkällä. Älä menetä toivoasi, jäämme odottamaan oikeasti osaavien apua :)

Äänestä

"Pitäisi noin 9Mt kokoisessa tiedostossa etsiä tekstistä tietyt sanat, ja lisätä rivinvaihto niiden eteen."

Enpä ole asiantuntija, mutta tuollaiset hommat hoitunevat ohjelmilla (mukana yleensä jakeluissa)
sed, awk, tr ja tietenkin perlillä.
http://www.cs.tut.fi/~jkorpela/unix/5.11.html

Jos tuo "moi: moi" on vakio... onnistuisi tuo aika helposti jopa tekstieditorilla tai tekstinkäsittelyohjelmalla?

Äänestä
  • Ei ole vakio, vaan se voi olla ihan mikä tahansa sana.

    Ainoa tunnusmerkki on että niiden välissä on kaksoispiste ja sitten välilyönti kaksoispisteen oikealla puolella.

    hei: hei
    joulu: joulu
    kevät: kevät

    jne...

    Äänestä

  • konsolissa kirjoitti:

    Ei ole vakio, vaan se voi olla ihan mikä tahansa sana.

    Ainoa tunnusmerkki on että niiden välissä on kaksoispiste ja sitten välilyönti kaksoispisteen oikealla puolella.

    hei: hei
    joulu: joulu
    kevät: kevät

    jne...

    man awk
    man sed

    sed:llä homma ainakin onnistuu.

    Äänestä

  • seuravaa kirjoitti:

    man awk
    man sed

    sed:llä homma ainakin onnistuu.

    täältä löytyykään!

    Äänestä

  • seuravaa kirjoitti:

    man awk
    man sed

    sed:llä homma ainakin onnistuu.

    Olisin erittäin kiitollinen jos joku neuvoisi minua näiden ohjelmien kanssa. En oikeastaan ymmärtänyt mitään man sivuista :(

    Äänestä

  • konsolissa kirjoitti:

    Olisin erittäin kiitollinen jos joku neuvoisi minua näiden ohjelmien kanssa. En oikeastaan ymmärtänyt mitään man sivuista :(

    "oikeastaan ymmärtänyt mitään man sivuista :("

    Man sivut ovat referenssioppaita niille, jotka jo osaavat hommat, mutta tarkistavat detaljit.
    Dokumentaatiota on kaikista ohjelmista. Ohjelmat vain pitää itse opetella.
    Mietipä nyt itse: ei auta man g ? Opettaisiko joku minulle, kuinka c ohjelmoimaan?

    Äänestä

Onnistuu sangen helposti.

Laita tämä esim. tiedostoon nimeltä testiohjelma:

#!/usr/bin/perl

while() {
chomp();
/\W($ARGV[0]: $ARGV[0])\W/ && print "$`\n$1 $'\n";
}

(mikäli "type perl" tulostaa jotain muuta kuin tuo /usr/bin/perl, niin vaihda sen tuloste tuohon alkuun)

Sen jälkeen aja komento chmod 755 testiohjelma.

Sitten testaa toimiiko tuo itselläsikin:
./testiohjelma moi < testitiedosto

1. ohjelmalle annettu parametri on se haettava sana, ja syötetiedosto annetaan ohjelman luettavaksi tavanomaisella komentotulkin uudelleenohjauksella (

Äänestä
  • Mää arvasin että Perli on maailman enstex tykein peli tollaseen :) Kun vielä joskus jaksais itte opetella..

    Äänestä

  • Ongelmana, etten tiedä haettava sanaa, se voi olla ihan mitä vaan.

    Ohjelman pitäisi osata tunnista automaattisesti kaksi peräkkäin oleva sanaa, joiden välissä on kaksoispiste.

    Esim jos merkkijono on:

    "Tämä on tällainen: tällainen esimerkki: vain mutta: ehkä joku: joku: tajuaa, mitä minä: minä tarkoitan"

    Niin lopputulos pitäisi olla:

    Tämä on \n
    tällainen: tällainen esimerkki: vain mutta: ehkä \n
    joku: joku: tajuaa, mitä \n
    minä: minä tarkoitan

    Äänestä

Kommentoi aloitusta


konsolissa kirjoitti:

Pitäisi noin 9Mt kokoisessa tiedostossa etsiä tekstistä tietyt sanat, ja lisätä rivinvaihto niiden eteen.

Onnistuuko tämä jotenkin helposti?

Eli pitäisi tekstissä löytää kaikki sanat jotka esiintyvät kaksi kertaa peräkkäin ja niiden välissä on kaksoispiste.

"tämä on teksti moi: moi ja tämä jatkuu vielä"

Eli pitäisi näiden "moi: moi" eteen lisätä rivinvaihto, jotta lopputulos olisi:

"tämä on teksti
moi: moi ja tämä jatkuu vielä"

Teksti on utf-8.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu