Unix ja shell-ohjelmointi 2001, demo 4 (14.2.2001)

  1. Tiedostossa on ihmisten nimiä, sukunimi viimeisenä, välilyönneillä erotettuina, yksi ihminen per rivi. Miten voisit etsiä sieltä

    1. kaksiosaisia sukunimiä (Virtanen-Lahtinen tms)?
    2. kaksiosaisia etunimiä (Ville-Petteri)?
    3. sukunimiä joissa on iso kirjain muualla kuin alussa (O'Neil, MacIntosh)?
    4. nimiä (etu- tai suku-) jotka alkavat pienellä kirjaimella (d'Arnot)?
    5. sukunimiä joihin kuuluu erillinen etuliite ''von'', ''af'', ''van'', ''van der'', ''van den'', ''von der'' (Juhan af Grann, Mies van der Rohe)?
    6. ihmisiä joiden sukunimi ei pääty -nen, -la tai -lä?
    7. ihmisiä joiden jokin etunimeä ei löydy tiedostosta etunimet.txt?

  2. Miten voit

    1. salakirjoittaa tiedoston Cesarin menetelmällä, jossa jokainen kirjain korvataan aakkosissa seuraavalla (ja viimeinen a:lla), ja taas purkaa siten salakirjoitetun tiedoston?
    2. vaihtaa tiedoston joka rivillä aina kaksi peräkkäistä sanaa keskenään (mahdollinen pariton sana rivin lopussa jätetään paikalleen), esim.
      "Matti Meikäläinen ei ole ihan viisas." ->
      "Meikäläinen Matti ole ei viisas ihan." ?
    3. lisätä pilkuilla erotettuja kokonaislukuja sisältävään tiedostoon yhden sarakkeen nollia sarakkeiden 3 ja 4 väliin?
    4. tarkistaa että annettu merkkijono sisältää tasan 12 heksadesimaalinumeroa (0-9, A-F, a-f), joko ilman erottimia, kaksoispisteillä kahden välein eroteltuina (12:34:56:78:90:AB) tai keskeltä viivalla jaettuna (123456-7890AB) mutta ei muita ylimääräisiä merkkejä?
    5. siivota edellisen tehtävän tyyppisiä heksadesimaalinumeroita: poistaa kaksoispisteet ja viivat ja muuttaa pienet a-f isoiksi?
    6. jakaa pelkkiä henkilötunnuksia (yksi per rivi) sisältävän tiedoston kolmeen tiedostoon 18XX, 19XX ja 20XX syntymävuosisadan mukaan?

    1. Miten voisit kerätä HTML-tiedostosta kaikki HREF-viittaukset (muotoa <a href="...">), siis tulostaa vain ne, jokainen omalle rivilleen, mutta ei ympäröivää tekstiä?
    2. Kuten edellä mutta halutaan tulostaa myös viiteteksti, siis seuraavaan </a> saakka.

  3. Oikeaoppinen tapa esittää esim. ääkkösiä HTML-dokumentissa on &Auml;=Ä jne. Olkoon tiedostossa htmlspecials lista erikoismerkeistä ja niiden HTML-esityksestä tyyliin

    character notation
    ä &auml;
    ö &ouml;
    Ä &Auml;
    Ö &Ouml;

    Kirjoita skriptit, jotka sitä käyttäen muuntavat erikoismerkkejä tiedostossa HTML-muotoon ja takaisin.

  4. Sähköpostin kuoriosa (header ) on tämännäköinen:
    From Hewlett-Packard@hpcc963.external.hp.com  Thu Apr  6 12:36:23 2000
    Return-Path: <Hewlett-Packard@hpcc963.external.hp.com>
    Received: from hpcc963.external.hp.com (hpcc963.external.hp.com [192.151.11.92])
            by jane.math.jyu.fi (8.8.6 (PHNE_14041)/8.8.6) with ESMTP id MAA16086
            for <tt@mit.jyu.fi>; Thu, 6 Apr 2000 12:36:22 +0300 (EETDST)
    From: Hewlett-Packard@hpcc963.external.hp.com
    Received: (from root@localhost)
            by hpcc963.external.hp.com (8.8.6 (PHNE_17135)/8.8.5tis) id FAA12651;
            Thu, 6 Apr 2000 05:36:19 -0400 (EDT)
    Date: Thu, 6 Apr 2000 05:36:19 -0400 (EDT)
    Message-Id: <200004060936.FAA12651@hpcc963.external.hp.com>
    To: tt@mit.jyu.fi
    Subject: Extension Software Patch Bundles Software License
    Status: RO
    Content-Length: 1070
    Lines: 42
                    
    
    Ensimmäinen kuorikenttä (header line ) on aina "From " (isolla alkukirjaimella ja välilyönti perässä), moniriviset kuorikentät osoitetaan sisentämällä jatkorivit ja kuoriosan päättää tyhjä rivi. Tällaisia voi olla postikansiossa monta, uuden viestin alun tunnistaa juuri "From " -alkuisesta rivistä.

    Kirjoita skripti joka käy sähköpostikansion läpi, tarkistaa jokaisesta viestistä onko sen otsikossa (Subject:) jossain sana "kalakukko" ja jos on, tallettaa viestin kuorineen tiedostoon $HOME/censored, ja muussa tapauksessa lisää kuoririvin
    X-note: approved by censorship board
    ja tulostaa viestin (kuorineen) stdiniin.

    1. Kirjoita skripti, joka etsii stdinistä palindromeja (sanoja jotka ovat samoja lopusta alkuun, kuten 'saippuakauppias'-monisanaisia ei haluta). Argumenttina voidaan antaa halutun palindromin pituus, joko tasan haluttu tai vaihteluväli (n-m ). Voit olettaa maksimipituudeksi 19 merkkiä.

    2. Olkoon tiedostossa eripituisia palindromeja, yksi per rivi. Miten voit lajitella ne aakkosjärjestykseen käyttäen avaimena niiden loppupuolta (parittomanpituisissa keskimmäisestä merkistä, parillisenpituisissa puoliväliä seuraavasta merkistä alkaen)? (Esim. 'abba' < 'aibofobia' < 'siis' < 'saippuakauppias' < 'xerox' < 'suuruus'.)


File translated from TEX by TTH, version 1.98.
On 8 Feb 2001, 18:32.