Awk: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Rsavolai (talk | contribs)
No edit summary
Rsavolai (talk | contribs)
No edit summary
Line 17: Line 17:
'''Nimi:''' Reigo Savolainen<br />
'''Nimi:''' Reigo Savolainen<br />
'''Grupp:''' AK31<br />
'''Grupp:''' AK31<br />
'''Viimati muudetud:''' 30.01.2010<br />
'''Viimati muudetud:''' 01.05.2010<br />
<blockquote style="margin: 2em 2em 2em 0;">
<blockquote style="margin: 2em 2em 2em 0;">
{| class="wikitable" style="text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;"  
{| class="wikitable" style="text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;"  
Line 40: Line 40:




Unixi-laadses süsteemis, saad laadida Git algkoodi näiteks selliselt lehelt nagu http://git-scm.com/download. Võib kasutada ka ühte nendest paljudest peegellehtedelt (mirror sites) (kernel.org mirrors.)
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul


     sudo apt-get build-dep git-core git-doc
     muster { tegevus },
   
    Download the latest stable release of Git from its web site http://git-scm.com/
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2
   
    Unpack the downloaded archive file.
    tar xjf git-1.6.6.1.tar.bz2
   
    Go into the unpacked folder.
    cd git-1.6.6.1/
    ./configure
    make prefix=/usr/local all doc
    sudo make install install-doc
    Remove the unpacked folder.


Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.
kus muster on tavaliselt avaldis ja tegevus on käskude jada.
    apt-get install git-core (Debian based)
    yum  install git-core (RedHat)


Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.
    http://www.backports.org/debian/pool/main/g/git-core/
    http://kernel.org/pub/software/scm/git/RPMS/


Git versiooni näeme:
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.
    git --version


Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:
Lisaks lihtsale AWKi avaldisele võib muster olla ka BEGIN või END, mille tulemusel täidetakse tegevus vastavalt kas enne või pärast sisendist kõikide ridade lugemist, või muster1, muster2, mis võtab terve hulga sisendridasid alates reast, mis sobitub muster1ga, kuni reani, mis sobitub muster2ga, enne kui võrdleb järjekordset sisendirida muster1ga.
    git clone git://git.kernel.org/pub/scm/git/git.git
 
Kui tekivad probleemid ühenduse saamisel (Git kasutab porti 9418), võib proovida ühendada repositooriumiga üle HTTP protokolli (see viis on tunduvalt aeglasem, kuid töötab isegi läbi tulemüüri):
    git clone http://www.kernel.org/pub/scm/git/git.git


Lisaks tavalistele aritmeetika ja loogika tehtemärkidele on AWKi avaldistes ka tilde-tehtemärk ~, mis võrdleb regulaaravaldist sõnega. Kasuliku süntaktilise suhkruna võrdleb /regexp/ (regulaaravaldis) ilma tilde-tehtemärgita käesoleva sisendreaga.


----
----

Revision as of 10:23, 1 May 2010

Sissejuhatus:

AWK on Belli laboris 1977 välja töötatud programmeerimiskeel, mis on loodud tekstitöötluseks. AWK-s võetakse sisendandmed kas tekstifailist või standardsisendist.

Keele nimi "AWK" on tuletatud keele autorite perekonnanimedest Alfred Aho, Peter Weinberger ja Brian Kernighan, kuid tavaliselt seda ei hääldata nagu tähtede järjendit (A-W-K), vaid pigem [ook] nagu alk, mis on inglise keeles auk. Alk on ka AWK vapilind, näiteks raamatu "The AWK Programming Language" kaanel - sellele raamatule viidatakse tihti, kasutades lühendit TAPL). Väiketähtedes kirjutatuna viitab awk UNIXis või Plan 9-s kirjutatud programmile, mis jooksutab teisi AWKis kirjutatud programme. AWKis kirjutatud arvutiprogrammi käivitamiseks UNIXi käsurealt tuleb AWK-programmi nime ette kirjutada käsk awk).

"AWK on tekstifailide töötlemise keel. Faili käsitletakse kirjete jadana ja vaikimisi on iga rida eraldi kirje. Iga rida jagatakse omakorda väljadeks, mis tähendab, et rea esimene sõna on esimene väli, rea teine sõna teine väli ja nii edasi. AWKi programm koosneb muster-käsklausetest. AWKi programm loeb sisendit reakaupa. Sisse loetud rida võrreldakse programmis iga mustriga ja iga sobiva mustri korral täidetakse mustrile järgnev käsk." - Alfred Aho[1]

AWK on näide programmeerimiskeelest, mis kasutab laialdaselt sõne andmetüüpi ja regulaaravaldisi. Algse AWKi võimsus, lakoonilisus ja piirangud inspireerisid Larry Walli kirjutama Perli. Samas defineeriti AWKi võimsamad variandid POSIX AWK ja gawk (GNU AWK). Kuigi AWK ja sed projekteeriti algselt üherealiste programmide loomiseks, kirjutati isegi Belli laborites suuri ja hästi struktureeritud AWKi programme.

AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi "torule" (pipeline) arvutuslike lisavõimaluste lisamise vahendina. Peaaegu igale moodsale UNIXi-laadsele operatsioonisüsteemile on sisse ehitatud mingisugune AWKi versioon. AWKi peetakse UNIXi-laadse operatsioonisüsteemi kohustuslikuks osaks. Lisaks Bourne'i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.


Artikli autor ja logi

Nimi: Reigo Savolainen
Grupp: AK31
Viimati muudetud: 01.05.2010

Versioon Lisatud   Kommentaar
0.1 26.01.2010     Artikli loomine
0.1.1 30.01.2010     Esialgne sisu sisestus
0.1.2 30.01.2010     Artikli täiendamine
0.1.3 30.01.2010     Valmis



AWKi programmide struktuur

AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul

   muster { tegevus },

kus muster on tavaliselt avaldis ja tegevus on käskude jada.

Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.

Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.

Lisaks lihtsale AWKi avaldisele võib muster olla ka BEGIN või END, mille tulemusel täidetakse tegevus vastavalt kas enne või pärast sisendist kõikide ridade lugemist, või muster1, muster2, mis võtab terve hulga sisendridasid alates reast, mis sobitub muster1ga, kuni reani, mis sobitub muster2ga, enne kui võrdleb järjekordset sisendirida muster1ga.

Lisaks tavalistele aritmeetika ja loogika tehtemärkidele on AWKi avaldistes ka tilde-tehtemärk ~, mis võrdleb regulaaravaldist sõnega. Kasuliku süntaktilise suhkruna võrdleb /regexp/ (regulaaravaldis) ilma tilde-tehtemärgita käesoleva sisendreaga.



Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):

Gitsosise installeerimine:

Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.

   sudo apt-get install python-setuptools

Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.

   cd ~ && mkdir src && cd src
   git clone git://eagain.net/gitosis.git
   cd gitosis
   python setup.py install

Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.

   sudo adduser \
   --system \
   --shell /bin/sh \
   --gecos 'git version control' \
   --group \
   --disabled-password \
   --home /home/git \
   git

Kui kõik hästi läheb siis on tulemus midagi sarnast:

   Adding system user `git'...
   Adding new group `git' (211).
   Adding new user `git' (211) with group `git'.
   Creating home directory `/home/git'.

Jätkamiseks on meil vaja avalikku SSH võtit.

   ssh-keygen -t rsa

Avalik võti peab olema $HOME/.ssh/id_rsa.pub. Kopeeri see serverisse, näiteks SCP-ga, vms, (soovitavalt näiteks kataloogi /tmp, kuna sellisel juhul ei teki õiguste probleeme), kus jookseb Gitosis, ning lisa see authorized keys listi.

   sudo -H -u git gitosis-init < /tmp/id_rsa.pub

Õnnestumise korral annab sellise teate:

   Initialized empty Git repository in ./
   Initialized empty Git repository in ./

Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:

   git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git
   cd gitosis-admin
   sudoedit gitosis.conf

Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.

   [group test]
   members = user@email.com
   writeable = test_project
   daemon = yes

Kui fail on salvestatud ja repositooriumiga ühendatud, siis...

   commit -a -m "Added group test and test_project in group test."

...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:

   sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all

Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.


Git-daemoni konfigureerimine Ubuntus

   sudo apt-get install git-daemon-run
   sudo runsvdir /etc/service &
   sudo vi /etc/sv/git-daemon/run
   -> changed the exec line to look like this:
   -> exec git-daemon --verbose --base-path=/var/git
   sudo /etc/init.d/git-daemon-run start
   touch /var/git/myrepo.git/git-daemon-export-ok
   git clone git://my-box/myrepo.git myrepo

Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git


Lingid

   http://book.git-scm.com/
   http://git.wiki.kernel.org/index.php/GitLinks
   http://progit.org/book/
   http://jonas.nitro.dk/git/quick-reference.html
   http://www.youtube.com/watch?v=4XpnKHJAok8

--Rsavolai 13:20, 30 January 2010 (EET)