Tekstin muokkaus

konsolissa

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.

10

426

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • viisaammilta

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

    • sed,awk,tr ja perl

      "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?

      • konsolissa

        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...


      • seuravaa
        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.


      • mitä asiantuntijoita
        seuravaa kirjoitti:

        man awk
        man sed

        sed:llä homma ainakin onnistuu.

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


      • konsolissa
        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 :(


      • Järki käteen
        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?


    • 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 (

      • viisaammilta

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


      • konsolissa

        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


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kun väestö ikääntyy ja veronmaksajat vähenee, mitä sitten vasemmistolaiset?

      Maahanmuutto ei vaan ole ratkaisu väestön ikääntymiseen. Maahanmuutto lykkää ja hidastaa väestön ikääntymistä ja työv
      Maailman menoa
      144
      3641
    2. "Mitä sä nainen tuot sitten pöytään" ?

      Jos mies provaidaa ja suojelee... Pitääkö miesten kysyä tuollaisia?
      Ikävä
      72
      2206
    3. Minja jytkyttää vas.liiton kannatusta ylöspäin

      Alkaa raavaat duunarimiehetkin palaamaan vasemmistoliiton kannattajiksi. Eduskunnassahan on vain kaksi työntekijöiden p
      Maailman menoa
      64
      1938
    4. Aktivistinainen pysäytti ICE-agentin luodin päällään USA:ssa!

      Video ampumistilanteesta: https://edition.cnn.com/2026/01/07/us/video/ice-shooting-minneapolis-digvid "Media: ICE:n am
      Maailman menoa
      97
      1911
    5. Tiedän ettei

      Meistä mitään tule. Toinen oli sinulle tärkeämpi
      Ikävä
      19
      1869
    6. Oikeistopuolueiden kannatus vain 37,8 %, vasemmiston 43,0 %

      Keskustaan jää 17,4 prosenttia ja loput ovat sitten mitä ovat. Mutta selvästikin Suomen kansa on vasemmalle kallellaan.
      Maailman menoa
      9
      1714
    7. Ekologinen kommunismi tulee voittamaan fossiilikapitalismin

      Kiina on mahtitekijä uusiutuvien energialähteiden kehityksessä, ja Trump osoitus viimeisestä öljyn perään itkemisestä, m
      Maailman menoa
      17
      1581
    8. Laitetaan nyt kirjaimet kohdilleen

      kuka rakastaa ja ketä ?
      Ikävä
      79
      1564
    9. Kyllä mä suren

      Sitä että mikään ei ole kuten ennen. Ei niitä hetkiä ja katseita. Toisaalta keho lepää eikä enää tarvitse sitä tuskaa ko
      Ikävä
      11
      1370
    10. Mahonselän jäät - Saaristokunta Lieksa brutaalisti kriisin partaalla!

      Lieksan loppuvuoden hyvän kehityksen jälkeen ei olisi uskonut että palstan ahkerista kommentoijista huolimatta matkailu
      Lieksa
      125
      1353
    Aihe