Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Komennot datan käsittelyyn

Linux tarjoaa runsaasti työkaluja datatiedostojen tutkimiseen, suodattamiseen ja muokkaamiseen. Nämä työkalut ovat usein hyödyllisiä, kun datatiedostoja täytyy muuntaa muodosta toiseen tai kun suurista aineistoista täytyy poimia tiettyä dataa. Tavallisilla Linux-työkaluilla on kuitenkin rajoituksensa. Jos aiot tehdä monimutkaisempaa datanhallintaa, Pythonin ja Perlin kaltaiset skriptikielet voivat olla tehokkaampia työkaluja. Numeerisen datan tapauksessa monet sovellusohjelmat, esimerkiksi R, tarjoavat työkaluja sekä monimutkaisiin analyysitehtäviin että analyysin automatisointiin.

grep valitsee rivit, jotka vastaavat annettua merkkijonoa

Komentoa grep käytetään rivien valitsemiseen tiedostosta. Tämä komento on erittäin hyödyllinen datan poimimisessa suurista tiedostoista. grep-komennon käyttö kuitenkin edellyttää, että tunnet hyvin käsittelemäsi tiedoston sisällön. grep-komennon perussyntaksi on:

grep pattern target_file

Tämä komento käy kohdetiedoston läpi ja tulostaa ne rivit, jotka sisältävät annetun hakumallin.
Oletetaan esimerkiksi, että meillä on tiedosto nimeltä authors.txt, joka sisältää seuraavat rivit:

Eeva Pekkanen. Oulu 50
Markus Aho. Turku 50
Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32

Tässä tapauksessa komento:

grep Pekka authors.txt

tulostaisi kaksi riviä:

Eeva Pekkanen. Oulu 50
Pekka Niemi. Tampere 26

koska myös Pekkanen vastaa hakumerkkijonoa Pekka. Jos haluamme käyttää hakumerkkijonona koko nimeä, mukaan lukien nimien välisen välilyönnin, hakumerkkijono täytyy laittaa lainausmerkkeihin. Esimerkiksi

grep "Pekka Niemi" authors.txt

tulostaa vain

Pekka Niemi. Tampere 26

Käänteinen valinta tehdään valitsimella -v. Esimerkiksi komento

grep -v Pekka authors.txt

tulostaa

Markus Aho. Turku 50
Leena Virtanen. Kuopio 32

Oletuksena grep erottaa isot ja pienet kirjaimet, joten komento

grep pekka authors.txt

ei tuottaisi yhtään osumaa. Valitsimella -i grep ohittaa isojen ja pienten kirjainten erot. Esimerkiksi

grep -i pekka authors.txt

tulostaa jälleen

Eeva Pekkanen. Oulu 50
Pekka Niemi. Tampere 2

grep tulkitsee annetun hakumerkkijonon säännöllisenä lausekkeena, jossa joillakin merkeillä on erityinen merkitys ja ne tulkitaan osaksi säännöllistä lauseketta. Sama säännöllisten lausekkeiden syntaksi on käytössä myös komennoissa awk ja sed. Esimerkiksi:

  • . määrittää minkä tahansa yksittäisen merkin
  • ^ tarkoittaa rivin alkua
  • $ tarkoittaa rivin loppua
  • [ ] vastaa mitä tahansa hakasulkeiden sisällä olevaa merkkiä, joten esimerkiksi [abc] vastaisi merkkiä a, b tai c
  • [^ ] vastaa mitä tahansa merkkiä paitsi hakasulkeiden sisällä olevia merkkejä, joten esimerkiksi [^abc] valitsisi kaikki rivit, jotka sisältävät myös muita merkkejä kuin vain a, b ja c
  • * vastaa nollaa tai useampaa edeltävän merkin tai lausekkeen esiintymää
  • \{n,m\} vastaa n:stä m:ään edeltävän merkin tai lausekkeen esiintymää

Esimerkiksi

grep "i." authors.txt

tulostaa seuraavat kaksi riviä, koska hakuehtona on tässä tapauksessa i ja mikä tahansa muu merkki.

Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32

Tällaisissa tilanteissa voit käyttää kenoviivaa (\) määrittämään, että seuraavaa merkkiä ei pidä tulkita osaksi säännöllistä lauseketta. Näin ollen komento

grep "i\." authors.txt

palauttaa nyt vain yhden rivin:

Pekka Niemi. Tampere 26

grep-komentoa käytetään usein muiden komentojen tulosteen suodattamiseen. Esimerkiksi nähdäksemme, mitkä nykyisen hakemiston tiedostot ovat vuodelta 2010, voimme käyttää komentoa ls -l ja putkittaa sen grep-komennolle. grep-komennolla voimme valita tulosteesta vain ne rivit, jotka sisältävät merkkijonon 2010. Jotkin tiedostonimet voivat kuitenkin sisältää merkkijonon "2010", vaikka ne eivät olisikaan vuodelta 2010. Suodatuksen tehostamiseksi voimme käyttää lainausmerkkejä sisällyttämään välilyönnin ennen vuosilukua ja sen jälkeen hakumerkkijonoon: ls -l | grep " 2010 ". Tavallisen grep-komennon lisäksi on olemassa useita muita grep-tyyppisiä työkaluja. Esimerkiksi zgrep- tai bzgrep-komentoja voidaan käyttää rivien etsimiseen tiedostoista, jotka on pakattu gzip- tai bzip2-muotoon.

sed-komennon käyttö rivien valintaan rivinumeron perusteella

Virtaeditoria sed voidaan käyttää rivien valintaan ja muokkaamiseen tekstitiedostossa. Monet yllä kuvatuista grep-toiminnoista voidaan tehdä myös sed-komennolla. sed-komentoa käsitellään tarkemmin luvussa Merkkien ja merkkijonojen korvaaminen. Tässä näytämme vain, miten sed-komentoa voidaan käyttää tietyn rivin valintaan tiedostosta. Esimerkiksi tiedoston authors.txt kolmas rivi voidaan valita komennolla sed -n "3"p authors.txt. Tässä tapauksessa tulos on Pekka Niemi. Tampere 26. Tämä rivien poimintatapa on kätevä silmukoissa. Esimerkiksi seuraava silmukka tulostaisi kolme riviä esimerkkitiedostosta:

for i in 4 3 2
do
  row=$(sed -n "$i"p authors.txt)
  echo "Row $i looks like: $row"
done

Yksinkertainen sarakevalinta cut-komennolla

Komento cut tarjoaa yksinkertaisen työkalun merkkien alueiden (-c) tai sarakkeiden (-f) valintaan Linuxin tekstitiedostosta. Kun valinta tehdään merkkipaikkojen perusteella, komennon syntaksi on:

cut -cstart-end

Esimerkiksi komento

cut -c2-5 authors.txt

tulostaa tekstin kunkin authors.txt-tiedoston rivin toisesta viidenteen merkkiin. Olettaen, että kyseessä on sama tiedosto, jota käytettiin yllä olevissa grep-esimerkeissä, tuloste näyttää tältä:

eva
arku
ekka
eena

Valitsimella -f voidaan tulostaa sarakkeita. Oletuksena sarkain toimii sarakkeiden erottimena. Muita erottimia voidaan määrittää valitsimella -d. Esimerkiksi valitaksemme tiedoston authors.txt ensimmäisen ja kolmannen sarakkeen (-f1,3) meidän täytyy määrittää välilyönti erottimeksi (-d " "):

$ cut -d " " -f1,3 authors.txt
Eeva Oulu
Markus Turku
Pekka Tampere
Leena Kuopio

awk-komennon käyttö sarakkeiden käsittelyyn

awk on skriptikieli, jota voidaan käyttää tekstitiedostojen käsittelyyn Linux-ympäristöissä. awk on melko vanha ohjelmointikieli, ja nykyään datanhallintaskriptien tekemiseen käytetään yleensä modernimpia skriptaustyökaluja. Hyvin yksinkertaisen syntaksinsa ansiosta awk-komentoa käytetään kuitenkin edelleen usein yksinkertaisiin suodatus- ja muokkaustehtäviin. Tässä ohjeessa emme anna yleiskatsausta awk-ohjelmointiin. Sen sijaan näytämme muutamia esimerkkejä siitä, miten awk-komentoa voidaan käyttää tiedostojen käsittelyyn tai osana Linux-komentoputkia. Yksinkertaisessa komentorivikäytössä awk-komennon perussyntaksi on:

awk -F "field delimiter" 'statement {command1}{command2}...' infile.dat

awk-komentoa voidaan käyttää syötedatan käsittelyyn sarakkeina. Oletuksena awk käyttää sekä välilyöntiä että sarkainta sarake-erottimina (huomaa, että toisin kuin cut-komento, awk tulkitsee kaikki peräkkäiset välilyönnit yhdeksi sarake-erottimeksi). Sarakkeisiin voidaan viitata awk-komennossa muuttujilla $1 (ensimmäinen sarake), $2 (toinen sarake), $3 (kolmas sarake) jne. Muuttujaa $0 voidaan käyttää viittaamaan "kaikkiin sarakkeisiin". Esimerkiksi seuraava komento tulostaa tiedoston authors.txt ensimmäisen ja kolmannen sarakkeen.

$ awk '{print $1 $3}' authors.txt
EevaOulu
MarkusTurku
PekkaTampere
LeenaKuopio

Yllä olevassa esimerkissä kenttiä ei eroteta tulosteessa toisistaan. Jotta näin tapahtuisi, sinun täytyy lisätä välilyönti- tai sarkainmerkki (\t) print-komentoon. Voit myös lisätä tulosteeseen muuta tekstiä. Seuraava esimerkki lisää tekstiä ja muuttaa sarakkeiden järjestystä:

$ awk '{print "Location: "$3"\t Name: "$1" "$2}' authors.txt
Location: Oulu   Name: Eeva Pekkanen.
Location: Turku  Name: Markus Aho.
Location: Tampere   Name: Pekka Niemi.
Location: Kuopio    Name: Leena Virtanen.

Hienostuneempi tapa tehdä yllä oleva muokkaus on käyttää printf-komentoa print-komennon sijaan. awk printf -komennon syntaksi on samanlainen kuin Linuxin printf-komennon.

awk '{printf "Location:%s\tName: %s %s \n", $3, $1, $2}' authors.txt

Yksi awk-komennon hyvistä ominaisuuksista on, että voit käyttää komennossa ehtolauseita. Voit verrata sekä merkkijonoja että lukuja. Esimerkiksi seuraava komento tulostaa dataa vain silloin, kun kolmas sarake on "Tampere":

$ awk '{if ( $3 == "Tampere")  print "Location: "$3"\tName: "$1" "$2}' authors.txt
Location: Tampere       Name: Pekka Niemi.

Vaihtoehtoisesti ehto voidaan määrittää lausekeosassa ennen awk-komentoja:

awk ' $3 == "Tampere" {print "Location: "$3"\t Name: "$1" "$2}' authors.txt

Jos sarakkeet sisältävät numeerisia arvoja, awk voi tehdä myös numeerisia operaatioita. Käytetään esimerkiksi awk-komentoa laskemaan, kuinka paljon levytilaa jpg-kuvatiedostot vievät nykyisessä kansiossa. Voimme ensin listata jpg-tiedostot komennolla: ls -l *.jpg

$ ls -l *.jpg
-rw-------+ 1 kkayttaj csc   85112 Dec 19  2002 Image_2.jpg
-rw-r--r--+ 1 kkayttaj csc  105542 Nov  6  2006 Screen.jpg
-rw-r--r--+ 1 kkayttaj csc  167598 May 15  2008 casa1.jpg
-rw-------+ 1 kkayttaj csc  550031 Mar 25  2008 hexa.jpg
-rw-------+ 1 kkayttaj csc  869534 Dec 23  2005 img.jpg
-rw-------+ 1 kkayttaj csc   19159 Jul 23  2003 kuva.jpg
-rw-r-xr-x+ 1 kkayttaj csc  433268 Dec 23  2005 plot3.jpg
-rw-------+ 1 kkayttaj csc 1591444 Jan 26 12:27 copy.jpg

Summataksemme tiedostokokojen arvot viidennessä sarakkeessa putkitamme tulosteen awk-komennolle:

$ ls -l *.jpg | awk '{total+=$5} END {print "JPG files in total: "total}'
JPG files in total: 3821688

Huomaa, että yllä olevassa awk-komennossa total on muuttujan nimi, jota awk käyttää. END määrittää, että seuraava komento suoritetaan vasta, kun kaikki syöterivit on käsitelty. Toisessa awk-komentoesimerkissä laskemme ja näytämme tiedoston authors.txt ikien kumulatiivisen summan ja keskiarvon.

awk '{ tot_age = tot_age + $4 }{ aver=tot_age/NR}{ print $0 " cumulative age sum:" tot_age " average:" aver}' authors.txt

Tässä käytämme automaattista NR-rivilaskurimuuttujaa keskiarvon laskemiseen. Tämä komento tulostaa:

Eeva Pekkanen. Oulu 50 cumulative age sum:50 average:50
Markus Aho. Turku 50 cumulative age sum:100 average:50
Pekka Niemi. Tampere 26 cumulative age sum:126 average:42
Leena Virtanen. Kuopio 32 cumulative age sum:158 average:39.5

sort-komennon käyttö rivien järjestämiseen

Komentoa sort voidaan käyttää tekstitiedoston rivien tai muun syötedatan järjestämiseen aakkos- tai numerojärjestykseen. sort-komennon syntaksi on yksinkertainen: sort -options files_to_sort. Oletuksena sort järjestää tiedoston rivit aakkosjärjestykseen käyttäen kirjainkoon huomioivaa lajittelua. Valitsimella -f tehdään kirjainkoosta riippumaton lajittelu. Jos data sisältää välilyönnillä tai sarkainmerkillä erotettuja sarakkeita, voit pyytää sort-komentoa käyttämään tiettyä saraketta (tai sarakkeita) datan järjestämiseen. Käytettävät sarakkeet voidaan valita valitsimella -k column_number. Esimerkiksi järjestääksesi tiedoston authors.txt datan (tässä luvussa aiemmin käytetty esimerkkitiedosto) sukunimien mukaan, jotka sijaitsevat toisessa sarakkeessa, käytä komentoa

sort -k 2 authors.txt

joka tulostaa:

Markus Aho. Turku 50
Pekka Niemi. Tampere 26
Eeva Pekkanen. Oulu 50
Leena Virtanen. Kuopio 32

Voit myös määrittää muita sarake-erottimia valitsimella -t separator. Huomaa, että oletuksena sort järjestää myös numerot aakkosjärjestykseen. Valitsin -n saa sort-komennon käyttämään sen sijaan numeerista järjestystä. Valitsin -r kääntää järjestyksen. Numeerinen lajittelu neljännen sarakkeen mukaan voidaan nyt tehdä komennolla

sort -k4 -n authors.txt

joka tuottaa

Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32
Eeva Pekkanen. Oulu 50
Markus Aho. Turku 50

Voit myös määrittää useita sarakkeita käytettäväksi lajittelussa. Esimerkiksi seuraava komento käyttää neljännen sarakkeen numeerista järjestystä ensisijaisena lajitteluperusteena (-k4n). Tapauksissa, joissa useilla riveillä on sama arvo neljännessä sarakkeessa, aakkosjärjestystä käytetään toissijaisena lajitteluperusteena (-k2):

sort -k4n -k2 authors.txt

Tässä tapauksessa tulos on:

Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32
Markus Aho. Turku 50
Eeva Pekkanen. Oulu 50

Lajiteltu data voidaan tallentaa uuteen tiedostoon joko käyttämällä valitsinta -o tai ohjaamalla vakiotuloste tiedostoon merkillä >. Esimerkiksi molemmat alla olevat komennot luovat saman tiedoston, joka sisältää tiedoston authors.txt lajitellun version.

sort -k4n -k2 -o authors_sorted.txt authors.txt
sort -k4n -k2 authors.txt > authors_sorted.txt

Kaksoiskappalerivien poistaminen uniq-komennolla

Komentoa uniq käytetään usein yhdessä sort-komennon kanssa redundanssin poistamiseen aineistosta. Komento uniq tarkistaa, ovatko kaksi peräkkäistä riviä syötetiedostossa tai vakiosyötteessä identtisiä. Oletuksena uniq poistaa peräkkäiset kaksoiskappalerivit. Huomaa, että uniq ei tarkista, esiintyykö identtinen rivi muualla syötteessä. Tämän vuoksi data yleensä lajitellaan ennen uniq-komennon käyttöä. Esimerkkinä oletetaan, että meillä on tiedosto nimeltä names, joka sisältää seuraavat rivit:

Pekka
Pekka
Leena
Markus
Eeva
Leena

Komennon

uniq names

suorittaminen antaa seuraavan tulosteen:

Pekka
Leena
Markus
Eeva
Leena

Tulosteessa rivi Leena esiintyy edelleen kahdesti, koska nämä kaksi identtistä nimeä eivät olleet peräkkäisillä riveillä. Tilanne voidaan korjata lajittelemalla rivit ennen uniq-komennon käyttöä. Esimerkiksi

sort names | uniq

tulostaa seuraavan tulosteen

Eeva
Leena
Markus
Pekka

Usein on hyödyllistä tietää, kuinka monta identtistä riviä löytyi. Tämä tieto voidaan lisätä uniq-komennon tulosteeseen valitsimella -c. Esimerkiksi

sort names | uniq -c

antaa seuraavan tulosteen:

1 Eeva
2 Leena
1 Markus
2 Pekka

Huomaa, että myös välilyönti- ja sarkainmerkit otetaan huomioon, kun uniq vertaa rivejä. Näin ollen rivi, joka sisältää "Leena", ei ole identtinen rivin kanssa, joka sisältää "Leena ". Oletuksena uniq erottaa isot ja pienet kirjaimet, mutta valitsimen -i käyttö saa uniq-komennon ohittamaan kirjainkoon ja pitämään "leena"- ja "Leena"-rivejä identtisinä. Huomaa kuitenkin, että jos käytät kirjainkoosta riippumatonta uniq-komentoa, saatat joutua tekemään myös lajittelun kirjainkoosta riippumattomassa tilassa komennolla sort -f.

Merkkien korvaaminen tr-komennolla

Komentoa tr (translate) käytetään yksittäisten merkkien korvaamiseen. tr lukee vakiosyötteen ja kirjoittaa muunnetun datan vakiotulosteeseen. tr-komennon syntaksi on

tr search_character replacement_character

Esimerkiksi pisteet (.) tiedostossa authors.txt voidaan korvata pilkuilla (,) komennolla

tr "." "," < authors.txt

joka tulostaa

Eeva Pekkanen, Oulu 50
Markus Aho, Turku 50
Pekka Niemi, Tampere 26
Leena Virtanen, Kuopio 32

Huomaa, että yllä oleva komento ei muuta alkuperäistä syötetiedostoa millään tavalla. Tässä esitetyissä esimerkeissä tr-komennon tulokset tulostetaan näytölle. Kun tr-komentoa käytetään suurten tiedostojen muokkaamiseen, tuloste tulisi tietenkin ohjata näytön sijasta uuteen tiedostoon. Esimerkiksi

tr "." "," < authors.txt > authors_mod.txt

Jos haluat poistaa pisteet, voit käyttää valitsinta -d vain yhden merkistön kanssa määrittämään, mitkä merkit poistetaan:

tr -d "." < authors.txt

Huomaa, että tr muuntaa yksittäisiä merkkejä, ei sanoja. Näin ollen komento tr "Oulu" "Turku" ei muuttaisi sanaa "Oulu" sanaksi "Turku". Sen sijaan se tekisi koko tekstiin seuraavat merkkimuunnokset: O->T, l->r, u->k. Komento tr voi tehdä muunnoksia erikoismerkeillä, kuten sarkaimella (\t) ja rivinvaihdolla (\n), sekä ennalta määritellyillä merkistöillä, kuten kaikki pienet kirjaimet ([:lower:]) ja kaikki isot kirjaimet ([:upper:]). Esimerkiksi

tr "." "\n" < authors.txt

korvaisi pisteet rivinvaihdoilla tiedostossa authors.txt:

Eeva Pekkanen
 Oulu 50
Markus Aho
 Turku 50
Pekka Niemi
 Tampere 26
Leena Virtanen
 Kuopio 32

Tiedoston muokkaaminen niin, että kaikki teksti kirjoitetaan isoilla kirjaimilla, voidaan tehdä komennolla

tr "[:lower:]" "[:upper:]" < authors.txt

joka tuottaa

EEVA PEKKANEN, OULU 50
MARKUS AHO, TURKU 50
PEKKA NIEMI, TAMPERE 26
LEENA VIRTANEN, KUOPIO 32

Katso tr-komennon manuaalisivulta (man tr) luettelo kaikista erikoismerkeistä ja merkistöistä, joita tr voi käyttää.

Sanojen ja merkkijonojen korvaaminen sed-komennolla

Tekstimerkkijonojen korvaaminen voidaan tehdä sed-komennolla. sed on virtaeditori, jota voidaan käyttää moniin tekstinkäsittelytoimintoihin. sed lukee merkkijonodataa joko tiedostosta tai toisesta komennosta putkitettuna, tekee käyttäjän määrittämät muokkaustoiminnot ja tulostaa sitten muokatun merkkijonon vakiotulosteeseen. sed on erittäin tehokas työkalu automaattiseen tekstinmuokkaukseen, vaikka sitä onkin hieman vaikea oppia. Tässä ohjeessa emme anna yleistä johdatusta sed-komentoon, sillä jo vaatimatonkin yleiskatsaus veisi useita sivuja. Sen sijaan näytämme muutamia käytännön esimerkkejä siitä, miten sed-komentoa voidaan käyttää. sed-komentoa käytetään yleisesti syntaksilla:

sed -e sed_script input_file

sed_script on tyypillisesti lyhyt määrittely, joka kertoo, millaista muokkausta tehdään. Esimerkiksi korvaustoiminnon tekemiseen voisimme käyttää sed-toimintoa s/"search string"/"replacement string"/g. Tässä muodossa s tarkoittaa etsi ja korvaa -toimintoa. Lopussa oleva g tarkoittaa, että korvaustoiminto on globaali, eli kaikki vastaavat merkkijonot korvataan. Voisit korvata esimerkiksi vain ensimmäisen tai toisen hakumerkkijonon esiintymän rivillä käyttämällä lukua 1 tai 2 g:n sijasta. Esimerkiksi toiminto, jossa Oulu korvataan Turulla tiedostossa authors.txt, voidaan tehdä komennolla

sed -e s/"Oulu"/"Turku"/g authors.txt

joka tuottaa

Eeva Pekkanen. Turku 50
Markus Aho. Turku 50
Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32

Aivan kuten grep-komento, sed tulkitsee annetun hakumerkkijonon säännöllisenä lausekkeena. Tämä tarkoittaa, että jotkin merkit tulkitaan erityisiksi säännöllisten lausekkeiden määrittelymerkeiksi. Esimerkiksi pistettä (.) käytetään määrittämään mikä tahansa yksittäinen merkki. Näin ollen sed-komento s/"."/","/g ei muuttaisi vain pisteitä vaan kaikki merkit pilkuiksi (,). Tällaisissa tilanteissa voit käyttää kenoviivaa (\) kertomaan sed-komennolle, että seuraavaa merkkiä ei pidä tulkita osaksi säännöllistä lauseketta. Toisaalta säännöllisten lausekkeiden käyttö voi tehdä sed-komennosta erittäin tehokkaan. Alla on joitakin säännöllisten lausekkeiden esimerkkejä sovellettuna tiedostoon authors.txt sed-komennolla.

sed-esimerkki 1

Merkin $ käyttö rivin lopun määrittämiseen (huomaa yksinkertaiset lainausmerkit ('), jotka estävät $-merkkiä tulemasta tulkituksi bash-muuttujan ilmaisimena):

sed -e s/'0$'/"1 changed"/g authors.txt

Tulostaa:

Eeva Pekkanen. Oulu 51 changed
Markus Aho. Turku 51 changed
Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32

sed-esimerkki 2

Pisteen (.) käyttö minkä tahansa yksittäisen merkin määrittämiseen:

sed -e s/"e.a"/"EXA"/g authors.txt

Tulostaa:

EEXA Pekkanen. Oulu 50
Markus Aho. Turku 50
Pekka Niemi. Tampere 26
LeEXA Virtanen. Kuopio 32

sed-esimerkki 3

Merkin ^ käyttö rivin alun määrittämiseen.

sed -e s/"^P"/"START:P"/g authors.txt

Tulostaa:

Eeva Pekkanen. Oulu 50
Markus Aho. Turku 50
START:Pekka Niemi. Tampere 26
Leena Virtanen. Kuopio 32

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta