<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rsavolai</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rsavolai"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Rsavolai"/>
	<updated>2026-06-21T04:11:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Awk&amp;diff=9362</id>
		<title>Talk:Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Awk&amp;diff=9362"/>
		<updated>2010-05-09T08:50:17Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alvar Unuks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sooviks nendes kohtades näha keelelist korrektuuri&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
AWK programmide struktuur&lt;br /&gt;
&lt;br /&gt;
mis sobitub muster1ga, &lt;br /&gt;
&lt;br /&gt;
mis sobitub muster2ga&lt;br /&gt;
&lt;br /&gt;
järjekordset sisendirida muster1ga.&lt;br /&gt;
&lt;br /&gt;
mis võrdleb regulaaravaldist sõnega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;kõik käskude näited peaks olema välja toodud kasti sees, oleks stiililiselt parem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
print-käsk &lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (output record separator - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on: &lt;br /&gt;
&lt;br /&gt;
print &lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada. &lt;br /&gt;
&lt;br /&gt;
print $1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWKi versioonid ja realisatsioonid &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
kirjaviga&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 11:50, 9 May 2010 (EEST)&lt;br /&gt;
&lt;br /&gt;
Parandused sisse viidud 09.05.10.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9360</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9360"/>
		<updated>2010-05-09T08:49:30Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enamus põhiasju kõik kenasti ära märgitud.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised andmed töö tegeija ning teostuse kohta.&lt;br /&gt;
&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;br /&gt;
&lt;br /&gt;
Puhtalt minu enda seisukohast häirisid need punane ja sinine tekstiväli, mis justkui näitaksid, et need kaks on antud teema juures kõige olulisemad punktid.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 11:49, 9 May 2010 (EEST)&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Awk&amp;diff=9359</id>
		<title>Talk:Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Awk&amp;diff=9359"/>
		<updated>2010-05-09T08:48:57Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alvar Unuks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sooviks nendes kohtades näha keelelist korrektuuri&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
AWK programmide struktuur&lt;br /&gt;
&lt;br /&gt;
mis sobitub muster1ga, &lt;br /&gt;
&lt;br /&gt;
mis sobitub muster2ga&lt;br /&gt;
&lt;br /&gt;
järjekordset sisendirida muster1ga.&lt;br /&gt;
&lt;br /&gt;
mis võrdleb regulaaravaldist sõnega&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;kõik käskude näited peaks olema välja toodud kasti sees, oleks stiililiselt parem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
print-käsk &lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (output record separator - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on: &lt;br /&gt;
&lt;br /&gt;
print &lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada. &lt;br /&gt;
&lt;br /&gt;
print $1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWKi versioonid ja realisatsioonid &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
kirjaviga&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reigo Savolainen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Parandused sisse viidud 09.05.10.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9358</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9358"/>
		<updated>2010-05-09T08:46:43Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enamus põhiasju kõik kenasti ära märgitud.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised andmed töö tegeija ning teostuse kohta.&lt;br /&gt;
&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;br /&gt;
&lt;br /&gt;
Puhtalt minu enda seisukohast häirisid need punane ja sinine tekstiväli, mis justkui näitaksid, et need kaks on antud teema juures kõige olulisemad punktid.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9354</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9354"/>
		<updated>2010-05-09T08:44:33Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enamus põhiasju kõik kenasti ära märgitud.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised andmed töö tegeija ning teostuse kohta.&lt;br /&gt;
&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9353</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9353"/>
		<updated>2010-05-09T08:44:06Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enamus põhiasju kõik kenasti välja toodud.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised andmed töö tegeija ning teostuse kohta.&lt;br /&gt;
&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9350</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9350"/>
		<updated>2010-05-09T08:43:19Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enamus põhiasju kõik kenasti välja toodud.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised adnmed töö tegeija ja tegemise kohta.&lt;br /&gt;
&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9349</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9349"/>
		<updated>2010-05-09T08:43:05Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enamus põhiasju kõik kenasti välja toodud.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised adnmed töö tegeija ja tegemise kohta.&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9346</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9346"/>
		<updated>2010-05-09T08:38:12Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Põhiasjad kõik kenasti välja toodud, väga süvitsi ei olegi vist vaja siinkohal minna.&lt;br /&gt;
&lt;br /&gt;
Paar asja siiski tooks välja:&lt;br /&gt;
&lt;br /&gt;
1. Algusepoole võiks olla artikli autori nimi, rühm, jne üldised adnmed töö tegeija ja tegemise kohta.&lt;br /&gt;
2. Hea oleks teada täpsemalt, mis on nende kahe versiooni vahelised erinevused, ning mis piirangud toob kaasa GPL.&lt;br /&gt;
3. Üldise funktsionaalsuse ja featuuride kohta võik samuti olla rohkem informatsiooni, ehk mis võimalusi VB pakub nii riistvaralise kui ka tarkvaralise külje pealt.&lt;br /&gt;
4. VirtualBoxi haldamiseks on ka olemas erinevaid lahendusi- näiteks Google VirtualBox Web Console. Sellest võiks ka veidi juttu olla.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9340</id>
		<title>Talk:VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:VirtualBox&amp;diff=9340"/>
		<updated>2010-05-09T08:21:27Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: New page: &amp;#039;&amp;#039;&amp;#039;Reigo Savolainen, AK31&amp;#039;&amp;#039;&amp;#039;  1. algusepoole võiks olla artikli autori nimi, rühm, jne üldised adnmed töö tegeija ja tegemise kohta.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Reigo Savolainen, AK31&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. algusepoole võiks olla artikli autori nimi, rühm, jne üldised adnmed töö tegeija ja tegemise kohta.&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9301</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9301"/>
		<updated>2010-05-09T05:45:17Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWK programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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 muster1-ga, kuni reani, mis sobitub muster2-ga, enne kui võrdleb järjekordset sisendirida muster1-ga.&lt;br /&gt;
&lt;br /&gt;
Lisaks tavalistele aritmeetika ja loogika tehtemärkidele on AWK avaldistes ka tilde-tehtemärk ~, mis võrdleb regulaaravaldist sõnega. Kasuliku süntaktilise näitena võrdleb /regexp/ (regulaaravaldis) ilma tilde-tehtemärgita käesoleva sisendreaga.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
  &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
  &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
  &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
  print 3+2&lt;br /&gt;
  print omafunktsioon(3)&lt;br /&gt;
  print omafunktsioon(muutuja)&lt;br /&gt;
  print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
  print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
  print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
  print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
  BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
  length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
  $ cat grepinawk&lt;br /&gt;
  pattern=$1&lt;br /&gt;
  shift&lt;br /&gt;
  awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
  $&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
  $ cat grepinawk&lt;br /&gt;
  muster=$1&lt;br /&gt;
  shift&lt;br /&gt;
  awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
  $&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
  $ cat grepinawk&lt;br /&gt;
  muster=$1&lt;br /&gt;
  shift&lt;br /&gt;
  awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
  $&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
  awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
*http://awk.info/&lt;br /&gt;
*http://www.awktutorial.com/&lt;br /&gt;
*http://www.gnu.org/software/gawk/manual/gawkinet/&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk1.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk2.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk3.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9300</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9300"/>
		<updated>2010-05-09T05:44:27Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWK programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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 muster1-ga, kuni reani, mis sobitub muster2-ga, enne kui võrdleb järjekordset sisendirida muster1-ga.&lt;br /&gt;
&lt;br /&gt;
Lisaks tavalistele aritmeetika ja loogika tehtemärkidele on AWK avaldistes ka tilde-tehtemärk ~, mis võrdleb regulaaravaldist sõnega. Kasuliku süntaktilise näitena võrdleb /regexp/ (regulaaravaldis) ilma tilde-tehtemärgita käesoleva sisendreaga.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
  &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
  &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
  &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
  print 3+2&lt;br /&gt;
  print omafunktsioon(3)&lt;br /&gt;
  print omafunktsioon(muutuja)&lt;br /&gt;
  print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
  print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
  print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
  print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
  BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
  length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
  $ cat grepinawk&lt;br /&gt;
  pattern=$1&lt;br /&gt;
  shift&lt;br /&gt;
  awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
  $&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
  $ cat grepinawk&lt;br /&gt;
  muster=$1&lt;br /&gt;
  shift&lt;br /&gt;
  awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
  $&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
  $ cat grepinawk&lt;br /&gt;
  muster=$1&lt;br /&gt;
  shift&lt;br /&gt;
  awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
  $&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
  awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
*http://awk.info/&lt;br /&gt;
*http://www.awktutorial.com/&lt;br /&gt;
*http://www.gnu.org/software/gawk/manual/gawkinet/&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk1.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk2.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk3.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9299</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9299"/>
		<updated>2010-05-09T05:40:51Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWK programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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 muster1-ga, kuni reani, mis sobitub muster2-ga, enne kui võrdleb järjekordset sisendirida muster1-ga.&lt;br /&gt;
&lt;br /&gt;
Lisaks tavalistele aritmeetika ja loogika tehtemärkidele on AWK avaldistes ka tilde-tehtemärk ~, mis võrdleb regulaaravaldist sõnega. Kasuliku süntaktilise näitena võrdleb /regexp/ (regulaaravaldis) ilma tilde-tehtemärgita käesoleva sisendreaga.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
*http://awk.info/&lt;br /&gt;
*http://www.awktutorial.com/&lt;br /&gt;
*http://www.gnu.org/software/gawk/manual/gawkinet/&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk1.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk2.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk3.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9073</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9073"/>
		<updated>2010-05-07T12:47:13Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
*http://awk.info/&lt;br /&gt;
*http://www.awktutorial.com/&lt;br /&gt;
*http://www.gnu.org/software/gawk/manual/gawkinet/&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk1.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk2.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk3.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9072</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=9072"/>
		<updated>2010-05-07T12:46:36Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
*http://awk.info/&lt;br /&gt;
*http://www.awktutorial.com/&lt;br /&gt;
*http://www.gnu.org/software/gawk/manual/gawkinet/&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk1.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk2.html&lt;br /&gt;
*http://www.ibm.com/developerworks/linux/library/l-awk3.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8621</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8621"/>
		<updated>2010-05-03T18:51:01Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8620</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8620"/>
		<updated>2010-05-03T18:49:32Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/who/bwk/awkc++.ps An AWK to C++ Translator]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039; &amp;lt;ref&amp;gt;[http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup FreeBSD&#039;s work log for importing BWK awk into FreeBSD&#039;s core], avaldatud 16. mail 2005, vaadatud 20. septembril 2006&amp;lt;/ref&amp;gt;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas. Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8619</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8619"/>
		<updated>2010-05-03T18:45:59Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/who/bwk/awkc++.ps An AWK to C++ Translator]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest &amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/awkbook/ &#039;&#039;&#039;The AWK Programming Language&#039;&#039;&#039;, ISBN 0-201-07981-X.]&amp;lt;/ref&amp;gt;. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039; &amp;lt;ref&amp;gt;[http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup FreeBSD&#039;s work log for importing BWK awk into FreeBSD&#039;s core], avaldatud 16. mail 2005, vaadatud 20. septembril 2006&amp;lt;/ref&amp;gt;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi &amp;lt;ref&amp;gt;[http://www.freebsd.org/doc/en_US.ISO8859-1/articles/bsdl-gpl/ FreeBSD arvamus GPL eelistest ja puudustest]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas.&amp;lt;ref&amp;gt;[http://sourceforge.net/projects/jawk/ &#039;&#039;Jawk at SourceForge&#039;&#039;]&amp;lt;/ref&amp;gt; Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil &amp;lt;ref&amp;gt;[http://home.vrweb.de/~juergen.kahrs/gawk/XML/ &#039;&#039;xgawk Home Page&#039;&#039;]&amp;lt;/ref&amp;gt;. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&amp;lt;ref&amp;gt;[http://qse.googlecode.com/ QSEAWK at Google Code]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 01 May 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8393</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8393"/>
		<updated>2010-05-01T08:46:42Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: /* AWKi versioonid ja realisatsioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/who/bwk/awkc++.ps An AWK to C++ Translator]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest &amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/awkbook/ &#039;&#039;&#039;The AWK Programming Language&#039;&#039;&#039;, ISBN 0-201-07981-X.]&amp;lt;/ref&amp;gt;. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039; &amp;lt;ref&amp;gt;[http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup FreeBSD&#039;s work log for importing BWK awk into FreeBSD&#039;s core], avaldatud 16. mail 2005, vaadatud 20. septembril 2006&amp;lt;/ref&amp;gt;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi &amp;lt;ref&amp;gt;[http://www.freebsd.org/doc/en_US.ISO8859-1/articles/bsdl-gpl/ FreeBSD arvamus GPL eelistest ja puudustest]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas.&amp;lt;ref&amp;gt;[http://sourceforge.net/projects/jawk/ &#039;&#039;Jawk at SourceForge&#039;&#039;]&amp;lt;/ref&amp;gt; Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil &amp;lt;ref&amp;gt;[http://home.vrweb.de/~juergen.kahrs/gawk/XML/ &#039;&#039;xgawk Home Page&#039;&#039;]&amp;lt;/ref&amp;gt;. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&amp;lt;ref&amp;gt;[http://qse.googlecode.com/ QSEAWK at Google Code]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BusyBox sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8392</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8392"/>
		<updated>2010-05-01T08:46:04Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: /* AWKi versioonid ja realisatsioonid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/who/bwk/awkc++.ps An AWK to C++ Translator]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest &amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/awkbook/ &#039;&#039;&#039;The AWK Programming Language&#039;&#039;&#039;, ISBN 0-201-07981-X.]&amp;lt;/ref&amp;gt;. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039; &amp;lt;ref&amp;gt;[http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup FreeBSD&#039;s work log for importing BWK awk into FreeBSD&#039;s core], avaldatud 16. mail 2005, vaadatud 20. septembril 2006&amp;lt;/ref&amp;gt;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida GNU GPLi &amp;lt;ref&amp;gt;[http://www.freebsd.org/doc/en_US.ISO8859-1/articles/bsdl-gpl/ FreeBSD arvamus GPL eelistest ja puudustest]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas.&amp;lt;ref&amp;gt;[http://sourceforge.net/projects/jawk/ &#039;&#039;Jawk at SourceForge&#039;&#039;]&amp;lt;/ref&amp;gt; Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil &amp;lt;ref&amp;gt;[http://home.vrweb.de/~juergen.kahrs/gawk/XML/ &#039;&#039;xgawk Home Page&#039;&#039;]&amp;lt;/ref&amp;gt;. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&amp;lt;ref&amp;gt;[http://qse.googlecode.com/ QSEAWK at Google Code]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BusyBox]] sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8391</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8391"/>
		<updated>2010-05-01T08:45:31Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua kestaskript, mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/who/bwk/awkc++.ps An AWK to C++ Translator]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest &amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/awkbook/ &#039;&#039;&#039;The AWK Programming Language&#039;&#039;&#039;, ISBN 0-201-07981-X.]&amp;lt;/ref&amp;gt;. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039; &amp;lt;ref&amp;gt;[http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup FreeBSD&#039;s work log for importing BWK awk into FreeBSD&#039;s core], avaldatud 16. mail 2005, vaadatud 20. septembril 2006&amp;lt;/ref&amp;gt;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida [[GNU GPL]]i &amp;lt;ref&amp;gt;[http://www.freebsd.org/doc/en_US.ISO8859-1/articles/bsdl-gpl/ FreeBSD arvamus GPL eelistest ja puudustest]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks Javas.&amp;lt;ref&amp;gt;[http://sourceforge.net/projects/jawk/ &#039;&#039;Jawk at SourceForge&#039;&#039;]&amp;lt;/ref&amp;gt; Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil &amp;lt;ref&amp;gt;[http://home.vrweb.de/~juergen.kahrs/gawk/XML/ &#039;&#039;xgawk Home Page&#039;&#039;]&amp;lt;/ref&amp;gt;. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&amp;lt;ref&amp;gt;[http://qse.googlecode.com/ QSEAWK at Google Code]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BusyBox]] sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8390</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8390"/>
		<updated>2010-05-01T08:43:49Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Sõnade sageduste arvutamine ===&lt;br /&gt;
&lt;br /&gt;
Sõnade sageduste leidmiseks kasutatakse assotsiatiivseid liste:&lt;br /&gt;
&lt;br /&gt;
 BEGIN { &lt;br /&gt;
     FS=&amp;quot;[^a-zA-Z]+&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 { &lt;br /&gt;
      for (i=1; i&amp;lt;=NF; i++)&lt;br /&gt;
           words[tolower($i)]++&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 END { &lt;br /&gt;
     for (i in words)&lt;br /&gt;
          print i, words[i]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
BEGIN-plokk seab väljaeraldajaks suvalise sümbolijada, mis ei sisalda tähti. Sealjuures võivad eraldajad olla regulaaravaldised. Pärast seda järgneb tegevus, mille käigus vaadatakse läbi iga sisendrida. Iga sisendrea sõna sagedust suurendatakse 1 võrra. Enne seda muudetakse iga sõna väiketähtedest koosnevaks, et sama sõna ei loetaks erinevaks olenevalt suurtähtede esinemisest sõnas. Lõpuks väljastatakse END-plokis sõnad koos vastavate esinemissagedustega. Rida&lt;br /&gt;
;for (i in words)&lt;br /&gt;
loob tsükli, mis käib läbi sõnade loendi, muutes i-d igaks loendi alaindeksiks, mis tähendab, et sõnade loendi pikkust pole vaja teada. See erineb enamikust keeltest, kus tsükkel käib läbi iga väärtuse etteantud loendis.&lt;br /&gt;
&lt;br /&gt;
===Käsurealt mustri sobitamine===&lt;br /&gt;
&lt;br /&gt;
Seda programmi võib esitada mitut moodi. Esimene kasutab Bourne&#039;i shelli, et luua [[kestaskript]], mis teeb kõik ära. See on neist meetodeist lühim:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:pattern=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;/&#039;$pattern&#039;/ { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$pattern&amp;lt;/tt&amp;gt; muster ei ole AWK käsus jutumärkidega kaitstud. Muster kontrollib tavalisel viisil, kas terve rida (&amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt;) sobitub. &amp;lt;tt&amp;gt;FILENAME&amp;lt;/tt&amp;gt; sisaldab käesoleva faili nime. Kaks järjestikku asuvat sõnet liidetakse automaatselt. AWKis puudub selleks spetsiaalne tehe. &amp;lt;tt&amp;gt;$0&amp;lt;/tt&amp;gt; viitab algsele muutmata sisendreale.&lt;br /&gt;
&lt;br /&gt;
Sama asja kirjutamiseks on teisigi mooduseid. Järgnev kestaskript pöördub keskkonna poole otse awk&#039;ist:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ ENVIRON[&amp;quot;muster&amp;quot;] { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
See on kestaskript, mis kasutab käsku &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; - järjend, mis lisandus uuemas awki versioonis. &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt; alaindeks on keskkonnamuutuja nimi. Tulemuseks on muutuja väärtus. See on nagu &#039;&#039;getenv&#039;&#039; funktsioon standardteekides ja POSIXis. Kestaskript loob keskkonnamuutuja &amp;lt;tt&amp;gt;pattern&amp;lt;/tt&amp;gt;, mis sisaldab esimest parameetrit, siis kaotab selle parameetri ja laseb awkil otsida mustrit igast failist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; võrdleb oma vasakut operandi parema operandiga (&amp;lt;tt&amp;gt;!~&amp;lt;/tt&amp;gt; on selle pöördtehe). Pane tähele, et regulaaravaldis on lihtsalt sõne ja seda saab hoida muutujas.&lt;br /&gt;
&lt;br /&gt;
Järgmine variant kasutab käsureal muutuja väärtustamist, milles awki parameetrit võib näha muutuja väärtustamisena:&lt;br /&gt;
:$ cat grepinawk&lt;br /&gt;
:muster=$1&lt;br /&gt;
:shift&lt;br /&gt;
:awk &#039;$0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&#039; &amp;quot;muster=$muster&amp;quot; $*&lt;br /&gt;
:$&lt;br /&gt;
&lt;br /&gt;
Viimane variant on kirjutatud puhtalt AWKis ilma kestaskriptide abita ja ilma vajaduseta teada palju AWKi skriptide teostusest (nagu on vaja teada käsurealt muutuja väärtustamise näite korral), kuid see on eeltoodutest pikem:&lt;br /&gt;
&lt;br /&gt;
 BEGIN {&lt;br /&gt;
     muster = ARGV[1]&lt;br /&gt;
     for (i = 1; i &amp;lt; ARGC; i++) # eemalda esimene argument&lt;br /&gt;
         ARGV[i] = ARGV[i + 1]&lt;br /&gt;
     ARGC--&lt;br /&gt;
     if (ARGC == 1) { # muster oli ainus argument, seega tuleb sisendit lugeda standardsisendist&lt;br /&gt;
         ARGC = 2&lt;br /&gt;
         ARGV[1] = &amp;quot;-&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 $0 ~ muster { print FILENAME &amp;quot;:&amp;quot; $0 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt; on lisaks esimese argumendi eraldamisele vajalik ka selleks, et takistada programmil seda failinimena tõlgendada, kui &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;-plokk lõpeb. Parameetrite arv &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; on alati ≥1, sest &amp;lt;tt&amp;gt;ARGV[0]&amp;lt;/tt&amp;gt; on see käsk, mis käivitas selle skripti - enamasti sõne &amp;lt;tt&amp;gt;&amp;quot;awk&amp;quot;&amp;lt;/tt&amp;gt;. Sealjuures &amp;lt;tt&amp;gt;ARGV[ARGC]&amp;lt;/tt&amp;gt; on tühisõne &amp;lt;tt&amp;gt;&amp;quot;&amp;quot;&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; algatab kommentaari, mis ulatub kuni rea lõpuni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt;-plokis awk kontrollib, kas on vaja lugeda standardsisendist enne käskude täitmist. See tähendab, et&lt;br /&gt;
;awk &#039;prog&#039;&lt;br /&gt;
töötab üksnes sellepärast, et fakti, et failinimed puuduvad, kontrollitakse ainult enne &amp;lt;tt&amp;gt;prog&amp;lt;/tt&amp;gt; käivitamist. Kui seada otseselt &amp;lt;tt&amp;gt;ARGC&amp;lt;/tt&amp;gt; väärtuseks 1, mis näitab, et argumente ei ole, siis awk lõpetab töö, sest talle tundub, et sisendfaile pole. Sellepärast tuleb otseselt öelda, et on vaja lugeda standardsisendist, erilise failinimega &amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Seesmised AWK skriptid ==&lt;br /&gt;
&lt;br /&gt;
Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn &amp;quot;&#039;&#039;shebang&#039;&#039;&amp;quot; (UNIXi) süntaksi abil.&lt;br /&gt;
&lt;br /&gt;
Näiteks UNIXi käsu &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis väljastab sõne &amp;quot;Tere, maailm!&amp;quot;, võib tekitada, luues faili nimega &amp;lt;tt&amp;gt;hello.awk&amp;lt;/tt&amp;gt;, mis sisaldab järgnevaid ridu:&lt;br /&gt;
 #!/usr/bin/awk -f&lt;br /&gt;
 BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; ütleb awkile, et järgnev argument on fail, millest tuleb lugeda AWK programm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi versioonid ja realisatsioonid ==&lt;br /&gt;
&lt;br /&gt;
AWK kirjutati levitati algselt UNIXi 7. versiooniga. 1985 hakkasid autorid keelt laiendama, põhiliselt kasutaja defineeritud funktsioonide lisamisega. AWKi kirjeldatakse raamatus &amp;quot;&#039;&#039;The AWK Programming Language&#039;&#039;&amp;quot;, mis avaldati 1988. Selle keele realisatsioonid olid kättesaadavad alates UNIXi System V-st. Et vältida arusaamatusi mitteühilduva vanema versiooniga, teatakse seda versiooni nime all &amp;quot;uus awk&amp;quot; ehk &#039;&#039;nawk&#039;&#039;. See realisatsioon oli kättesaadav vabavaraliselt alates 1996 ja seda haldab veel ikka Brian Kernighan.&lt;br /&gt;
&lt;br /&gt;
Vanemad versioonid UNIXist (nagu näiteks UNIX/32V), koosseisus oli &amp;lt;tt&amp;gt;awkcc&amp;lt;/tt&amp;gt;, mis teisendasid AWKi C-sse. Kernighan kirjutas programmi, millega sai teisendada AWKi C++-sse, kuid selle seisukord ei ole teada.&amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/who/bwk/awkc++.ps An AWK to C++ Translator]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BWK awk&#039;&#039;&#039; viitab Brian Kernighani versioonile. Seda on nimetatud ainsaks tõeliseks AWKiks (&#039;&#039;One True AWK&#039;&#039;), sest seda mõistet seostatakse raamatuga, mis algselt kirjeldas AWKi, ja ka fakti pärast, et Kernighan oli üks AWKi loojatest &amp;lt;ref&amp;gt;[http://cm.bell-labs.com/cm/cs/awkbook/ &#039;&#039;&#039;The AWK Programming Language&#039;&#039;&#039;, ISBN 0-201-07981-X.]&amp;lt;/ref&amp;gt;. FreeBSD viitab kõnealusele versioonile sama nimega (&#039;&#039;one-true-awk&#039;&#039; &amp;lt;ref&amp;gt;[http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/one-true-awk/FREEBSD-upgrade?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup FreeBSD&#039;s work log for importing BWK awk into FreeBSD&#039;s core], avaldatud 16. mail 2005, vaadatud 20. septembril 2006&amp;lt;/ref&amp;gt;. Selles versioonis on ka võimalusi, mida raamatus pole kirjeldatud, näiteks &amp;lt;tt&amp;gt;tolower&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;ENVIRON&amp;lt;/tt&amp;gt;, mis on eelnevalt selgitatud. Lisateavet vaata failist FIXES allikate loetelus. BWK awki kasutavad näiteks FreeBSD, NetBSD ja MacOS X.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; (GNU awk) on järjekordne tasuta tarkvara realisatsioon. See võimaldab kasutajal funktsionaalsust laiendada kasutaja kirjutatud teekide abil. See kirjutati enne kui algne realisatsioon vabalt kättesaadavaks sai ja on siiani laialdaselt kasutusel. Mitmel Linuxil on uusim gawki versioon ja seda tunnustatakse awki &#039;&#039;de facto&#039;&#039; realisatsioonina Linuxi maailmas. gawki versioon 3.0 oli awki nime all FreeBSDs enne versiooni 5.0. Järgnevad FreeBSD versioonid kasutasid BWK awki, et vältida [[GNU GPL]]i &amp;lt;ref&amp;gt;[http://www.freebsd.org/doc/en_US.ISO8859-1/articles/bsdl-gpl/ FreeBSD arvamus GPL eelistest ja puudustest]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mawk&#039;&#039;&#039; on väga kiire AWKi realisatsioon, mille autor on Mike Brennan. See põhineb baitkoodi interprataatoril.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;awka&#039;&#039;&#039;, mille algusosa on kirjutatud programmile mawk, on veel üks translaator, mis teisendab AWKi skripte C-sse. Pärast kompileerimist (autori &#039;&#039;libawk.a&#039;&#039; lisamist) saadud käivitatavad failid on oluliselt kiiremad ja autori testide põhjal võrreldavad AWKi teiste versioonide, Perli ja Tcliga. Väikesed skriptid teisenevad programmideks suurusega 160-170 kB.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tawk&#039;&#039;&#039; (Thompson AWK) on AWKi kompilaator Solarisele, MS-DOSile, OS/2le ja Microsoft Windowsile, mida varem müüs Thompson Automation Software. See ettevõte on oma tegevuse lõpetanud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jawk&#039;&#039;&#039; on SourceForge&#039;i projekt AWKi realiseerimiseks [[Java]]s.&amp;lt;ref&amp;gt;[http://sourceforge.net/projects/jawk/ &#039;&#039;Jawk at SourceForge&#039;&#039;]&amp;lt;/ref&amp;gt; Keelele on lisatud laiendused, et tagada AWKi skriptidest juurdepääs Java võimalustele (näiteks Java lõimed, &#039;&#039;Collections&#039;&#039; jne).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xgawk&#039;&#039;&#039; on SourceForge&#039;i projekt, mis põhineb gawkil &amp;lt;ref&amp;gt;[http://home.vrweb.de/~juergen.kahrs/gawk/XML/ &#039;&#039;xgawk Home Page&#039;&#039;]&amp;lt;/ref&amp;gt;. See laiendab gawki dünaamiliselt laetavate teekidega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QSEAWK&#039;&#039;&#039; on sisene AWKi interpretaatori realisatsioon, mis sisaldub QSE teegis, mis omakorda tagab API C ja C++ jaoks.&amp;lt;ref&amp;gt;[http://qse.googlecode.com/ QSEAWK at Google Code]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BusyBox]] sisaldab hõredalt dokumenteeritud AWKi realisatsiooni, mis paistab olevat täielik, autoriks Dmitri Zahharov. See on väga väike realisatsioon, mis sobib sisestele süsteemidele.&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8389</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8389"/>
		<updated>2010-05-01T08:36:28Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
*NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
*NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
*FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
*FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
*RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
*OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
*ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
*OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Muutujad ja süntaks===&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõna|võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, *  ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärgid|jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
&lt;br /&gt;
===Kasutaja defineeritud funktsioonid===&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
 function lisa_kolm (number) {&lt;br /&gt;
   return number +3&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
; print lisa_kolm(36),&lt;br /&gt;
mis väljastab &#039;&#039;&#039;39&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
==Lihtsad rakendused==&lt;br /&gt;
===Hello world===&lt;br /&gt;
&lt;br /&gt;
Programm &amp;quot;Hello world|Tere, maailm!&amp;quot; kirjutatatakse AWKis nii:&lt;br /&gt;
; BEGIN { print &amp;quot;Tere, maailm!&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Siin ei ole vaja ilmset &amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;-käsku, kuna ainus muster on &amp;lt;tt&amp;gt;BEGIN&amp;lt;/tt&amp;gt;, ühtegi käsurea argumenti ei töödelda.&lt;br /&gt;
&lt;br /&gt;
=== Pikemate kui 80 sümboli pikkuste ridade väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.&lt;br /&gt;
; length($0) &amp;gt; 80&lt;br /&gt;
&lt;br /&gt;
=== Sisendist loetud sõnade arvu väljastamine ===&lt;br /&gt;
&lt;br /&gt;
Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu &amp;quot;wc&amp;quot; ehk &amp;quot;&#039;&#039;word count&#039;&#039;&amp;quot; käsk UNIXis):&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     w += NF&lt;br /&gt;
     c += length + 1&lt;br /&gt;
 }&lt;br /&gt;
 END { print NR, w, c }&lt;br /&gt;
&lt;br /&gt;
Kuna programmi esimeses reas pole antud mustrit, siis vaikimisi sobib iga sisendrida ja järgnevad käsud täidetakse kõikidel ridadel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;w += NF&amp;lt;/tt&amp;gt; on lühendatud variant ja tähendab sama mis &amp;lt;tt&amp;gt;w = w + NF&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Viimaste sõnade liitmine ===&lt;br /&gt;
&lt;br /&gt;
 { s += $NF }&lt;br /&gt;
 END { print s + 0 }&lt;br /&gt;
&lt;br /&gt;
s-i suurendatakse NF-i võrra, mis on sisendirea viimase sõna (välja) järjekorranumber selles reas. Näiteks $4 tähistab 4. välja väärtust, siis $NF tähistab viimast välja olenemata sellest, mitu välja reas on (võib olla nii rohkem kui vähem kui eelnevates/järgnevates ridades). Dollarimärk $ on unaarne tehtemärk kõrgeima prioriteediga. Kui sisendreas pole ühtegi välja, siis NF väärtus on 0 ning $0, mis tähistab tervet rida, on tühi ja selle väärtus on samuti 0.&lt;br /&gt;
&lt;br /&gt;
Pärast kogu sisendi lugemist sobitub END-muster ja seejärel väljastatakse s. Kuid sisendis ei pruukinud olla ühtegi rida, mis tähendab, et s ei väärtustunud ja seega s väärtus on tühi sõne. Nulli liitmine muutuja väärtusele on AWKi eripära sõne numbriliseks muutmiseks. Tühja sõne ja muutujate liitmist kasutatakse numbrilise väärtuse sõneks muutmiseks, näiteks s &amp;quot;&amp;quot;. Sõnede liitmiseks pole operaatorit vaja, nad asetatakse lihtsalt järjest. Nulli liitmise tõttu väljastab programm 0, vastasel juhul oleks väljastatud tühi rida.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8388</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8388"/>
		<updated>2010-05-01T08:32:16Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja vaikeväärtus eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8386</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8386"/>
		<updated>2010-05-01T08:30:57Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioon (programmeerimine)|funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud [[looksulud]].&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja [[vaikeväärtus]]eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele ([[dollarimärk]] &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8385</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8385"/>
		<updated>2010-05-01T08:30:16Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AWKi käsud ==&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on [[funktsioon (programmeerimine)|funktsioonide]] väljakutsed, [[muutuja]]te väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud [[looksulud]].&lt;br /&gt;
&lt;br /&gt;
=== print-käsk ===&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (&#039;&#039;output record separator&#039;&#039; - väljundkirje eraldaja) ja [[vaikeväärtus]]eks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
; &amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
; &amp;lt;tt&amp;gt;print $1, $3&amp;lt;/tt&amp;gt;&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - &#039;&#039;output field separator&#039;&#039;), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele ([[dollarimärk]] &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;&amp;lt;tt&amp;gt;print&amp;lt;/tt&amp;gt;&amp;quot; ja &amp;quot;&amp;lt;tt&amp;gt;print $0&amp;lt;/tt&amp;gt;&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
;print 3+2&lt;br /&gt;
;print omafunktsioon(3)&lt;br /&gt;
;print omafunktsioon(muutuja)&lt;br /&gt;
;print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
;print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Standardmuutujad ===&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8383</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8383"/>
		<updated>2010-05-01T08:27:31Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWKi käsud&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
[redigeeri] print-käsk&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (output record separator - väljundkirje eraldaja) ja vaikeväärtuseks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
&lt;br /&gt;
print&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
&lt;br /&gt;
print $1&lt;br /&gt;
&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
&lt;br /&gt;
print $1, $3&lt;br /&gt;
&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - output field separator), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;print&amp;quot; ja &amp;quot;print $0&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
print 3+2&lt;br /&gt;
print omafunktsioon(3)&lt;br /&gt;
print omafunktsioon(muutuja)&lt;br /&gt;
print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[redigeeri] Standardmuutujad&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
&lt;br /&gt;
* NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
* NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
* FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
* FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
* RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
* OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
* ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
* OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[redigeeri] Muutujad ja süntaks&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, * ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
[redigeeri] Kasutaja defineeritud funktsioonid&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast function, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
function lisa_kolm (number) {&lt;br /&gt;
  return number +3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
&lt;br /&gt;
print lisa_kolm(36),&lt;br /&gt;
&lt;br /&gt;
mis väljastab 39.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8381</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8381"/>
		<updated>2010-05-01T08:26:14Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWKi käsud&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
[redigeeri] print-käsk&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (output record separator - väljundkirje eraldaja) ja vaikeväärtuseks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
&lt;br /&gt;
print&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
&lt;br /&gt;
print $1&lt;br /&gt;
&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
&lt;br /&gt;
print $1, $3&lt;br /&gt;
&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - output field separator), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;print&amp;quot; ja &amp;quot;print $0&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
print 3+2&lt;br /&gt;
print omafunktsioon(3)&lt;br /&gt;
print omafunktsioon(muutuja)&lt;br /&gt;
print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[redigeeri] Standardmuutujad&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
&lt;br /&gt;
    * NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
    * NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
    * FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
    * FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
    * RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
    * OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
    * ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
    * OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[redigeeri] Muutujad ja süntaks&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, * ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
[redigeeri] Kasutaja defineeritud funktsioonid&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast function, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
function lisa_kolm (number) {&lt;br /&gt;
  return number +3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
&lt;br /&gt;
print lisa_kolm(36),&lt;br /&gt;
&lt;br /&gt;
mis väljastab 39.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8380</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8380"/>
		<updated>2010-05-01T08:25:58Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AWKi käsud&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
AWKi käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWKi käskudeks on funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWKi on sisse ehitatud mitme funktsiooni tugi ja AWKi eri versioonid pakuvad neile rikkalikku lisa.&lt;br /&gt;
&lt;br /&gt;
Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.&lt;br /&gt;
[redigeeri] print-käsk&lt;br /&gt;
&lt;br /&gt;
print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (output record separator - väljundkirje eraldaja) ja vaikeväärtuseks reavahetus. print-käsu lihtsaim vorm on:&lt;br /&gt;
&lt;br /&gt;
print&lt;br /&gt;
&lt;br /&gt;
See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.&lt;br /&gt;
&lt;br /&gt;
print $1&lt;br /&gt;
&lt;br /&gt;
kuvab käsiloleva rea esimese välja.&lt;br /&gt;
&lt;br /&gt;
print $1, $3&lt;br /&gt;
&lt;br /&gt;
kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - output field separator), mille vaikeväärtuseks on üks tühik.&lt;br /&gt;
&lt;br /&gt;
Kuigi need väljad ($X) sarnanevad muutujatele (dollarimärk &amp;quot;$&amp;quot; viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud &amp;quot;print&amp;quot; ja &amp;quot;print $0&amp;quot; on võrdväärsed.&lt;br /&gt;
&lt;br /&gt;
print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:&lt;br /&gt;
&lt;br /&gt;
print 3+2&lt;br /&gt;
print omafunktsioon(3)&lt;br /&gt;
print omafunktsioon(muutuja)&lt;br /&gt;
print sin(3-2)&lt;br /&gt;
&lt;br /&gt;
Väljundi saab suunata faili:&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;avaldis&amp;quot; &amp;gt; &amp;quot;failinimi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
või UNIXi &amp;quot;toru&amp;quot; kasutades:&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;avaldis&amp;quot; | &amp;quot;käsk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[redigeeri] Standardmuutujad&lt;br /&gt;
&lt;br /&gt;
AWKi sisseehitatud ehk standardsete muutujate hulka kuuluvad väljamuutujad $1, $2, $3 ja nii edasi ($0 tähistab tervet rida). Nad tagastavad välja väärtuse või väljal oleva teksti käesolevast reast.&lt;br /&gt;
&lt;br /&gt;
On veel teisigi standardmuutujaid:&lt;br /&gt;
&lt;br /&gt;
    * NR sisaldab käsiloleva sisendist loetud tekstirea (sisendirea) järjekorranumbri.&lt;br /&gt;
    * NF sisaldab sisendireas olevate sõnade arvu. Tekstirea viimasele väljale saab viidata muutujaga $NF.&lt;br /&gt;
    * FILENAME sisaldab käsiloleva sisendfaili nime.&lt;br /&gt;
    * FS sisaldab väljaeraldaja sümboli, mida kasutatakse väljade eraldajana sisendfailis. Väljaeraldaja vaikeväärtus on suvaline arv tühikuid või tabulaatorivajutusi. FS-i väärtust saab muuta vastavalt väljaeraldajale sisendfailis.&lt;br /&gt;
    * RS sisaldab kirjeeraldaja. Kuna vaikimisi on iga sisendrida eraldi kirje, siis vaikimisi on kirjeeraldajaks reavahetuse sümbol.&lt;br /&gt;
    * OFS sisaldab väljundi väljaeraldaja. Vaikimisi on OFS väärtuseks tühik.&lt;br /&gt;
    * ORS sisaldab väljundi kirjeeraldaja. Vaikimisi on ORS väärtuseks reavahetuse sümbol.&lt;br /&gt;
    * OFMT sisaldab numbrilise väljundi vormingu. Vaikimisi vorming on &amp;quot;%.6g&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[redigeeri] Muutujad ja süntaks&lt;br /&gt;
&lt;br /&gt;
Muutujanimed võivad sisaldada kõiki ladina suur- ja väiketähti, numbreid ja allkriipsu, kuid muutujanimena ei tohi kasutada AWKi võtmesõnu.&lt;br /&gt;
&lt;br /&gt;
Tehtemärgid +, -, * ja / tähistavad vastavalt liitmist, lahutamist, korrutamist ja jagamist. Sõnede liitmiseks (sidurdamiseks) tuleb kaks muutujat või sõnekonstanti teineteise järele kirjutada. Sõnekonstantide vahelt tohib tühiku ära jätta, kuid kahe muutuja liitmisel tuleb nende vahele kindlasti tühik kirjutada. Sõnekonstante eraldatakse ja tähistatakse jutumärkidega.&lt;br /&gt;
&lt;br /&gt;
Programmilausete lõppu ei pea panema semikoolonit.&lt;br /&gt;
&lt;br /&gt;
Kommentaare võib programmi lisada, kasutades #-märki rea alguses.&lt;br /&gt;
[redigeeri] Kasutaja defineeritud funktsioonid&lt;br /&gt;
&lt;br /&gt;
Funktsioone defineeritakse nagu C-keeles. Funktsiooni definitsioon koosneb võtmesõnast function, funktsiooni nimest, argumentide nimedest ja funktsiooni kehast ehk sisust. Järgneb funkstiooni näide.&lt;br /&gt;
&lt;br /&gt;
function lisa_kolm (number) {&lt;br /&gt;
  return number +3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Selle funktsiooni väljakutsumiseks sobib käsk&lt;br /&gt;
&lt;br /&gt;
print lisa_kolm(36),&lt;br /&gt;
&lt;br /&gt;
mis väljastab 39.&lt;br /&gt;
&lt;br /&gt;
Funktsioonides saavad olla kohalikud muutujad. Nende nimed lisatakse parameetrite loendi lõppu, kuid neid ei ole tarvis funktsiooni väljakutsumisel väärtustada. Tavaks on lisada argumentide loendisse enne kohalikke muutujaid rohkem tühikuid, et märkida kohta, kus argumendid lõpevad ja kohalikud muutujad algavad.&lt;br /&gt;
&lt;br /&gt;
Funktsiooni definitsioonis võivad olla liigsed tühikud funktsiooni nime ja algussulu vahel, kuid funktsiooni väljakutses ei tohi liigseid tühikuid olla.&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8378</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8378"/>
		<updated>2010-05-01T08:24:06Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.04.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 01.05.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8376</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8376"/>
		<updated>2010-05-01T08:23:18Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 01.05.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AWKi programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul&lt;br /&gt;
&lt;br /&gt;
    muster { tegevus },&lt;br /&gt;
&lt;br /&gt;
kus muster on tavaliselt avaldis ja tegevus on käskude jada.&lt;br /&gt;
&lt;br /&gt;
Iga sisendirida võrreldakse kõikide mustritega järgemööda ja tegevus täidetakse iga mustri kohta, mille avaldis on tõene.&lt;br /&gt;
&lt;br /&gt;
Nii mustri kui ka tegevuse võib ära jätta. Mustri puudumisel sobib iga sisendrida. Vaikimisi tegevus on sisendirea väljastamine standardväljundisse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8375</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8375"/>
		<updated>2010-05-01T08:22:14Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git --version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8374</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8374"/>
		<updated>2010-05-01T08:21:52Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== AWKi programmide struktuur ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git --version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8372</id>
		<title>Awk</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Awk&amp;diff=8372"/>
		<updated>2010-05-01T08:18:13Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: New page: == 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 standardsisendi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keele nimi &amp;quot;AWK&amp;quot; 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 &amp;quot;The AWK Programming Language&amp;quot; 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).&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;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.&amp;quot; - Alfred Aho[1]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
AWK oli üks väheseid vahendeid, mis oli saadav UNIXi seitsmendas versioonis ja kogus populaarsust UNIXi &amp;quot;torule&amp;quot; (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&#039;i shellile on AWK ainus standardses UNIXi keskkonnas kättesaadav skriptimiskeel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Git kliendi paigaldus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git --version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Git_paigaldamine&amp;diff=3624</id>
		<title>Talk:Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Git_paigaldamine&amp;diff=3624"/>
		<updated>2010-01-31T10:38:59Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Retsenseerija: Heigo Post AK41, 30.01.2010 19:41&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! KRITEERIUM&lt;br /&gt;
! KAAL&lt;br /&gt;
! HINNANG&lt;br /&gt;
! SELGITUS&lt;br /&gt;
! PÕHJUSED&lt;br /&gt;
|-&lt;br /&gt;
| Versioonide ajalugu&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Autorid&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Viimase muutmise aeg&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Skoop&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Skoop puudu - näidata millise distributsiooni kohta antud juhis kehtib.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Sissejuhatus&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Nõuded&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Nõuded puudu.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Installeerimise ja konfigureerimise osa&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Tehniliselt korrektne &lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Korraldused on tekstist eristatavad&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Käskude väljundid on tekstist eristatavad&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Muutuvad osad on eristatavad&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Tekst on loetav (struktuur on olemas)&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Tekst on arusaadav (laused on korrektsed)&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Teenuse varundamine&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Puudub(võiks olla - kasvõi näidata millistest failidest peaks varukoopiad tegema).&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Teenuse taastamine&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| Puudub(võiks olla - kui on varukoopiad olemas siis näidata kuidas teenust lihtsalt taastada).&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Kokku&lt;br /&gt;
| 20&lt;br /&gt;
| 15&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kommentaar:&lt;br /&gt;
Reigo Savolainen AK31, 31.01.2010 12:36&lt;br /&gt;
                                   &lt;br /&gt;
                                                                                                  &lt;br /&gt;
Skoop: antud juhis kehtib ainult linux keskkonnas (igatahes pole kuulnud ega näinud kedagi windows keskkonnas GIT&#039;i naturaalselt kasutavat (cygwin jne ei ole vabandus)). Distributsioonide erinevuste kohta- väike märge on RedHat/Debian sisuliste paketihaldurite käskude kohta. Üldjuhul käib see ikkagi kõigi Linuxi ditributsioonide kohta. Seega selle punktiga ma pole rahul.&lt;br /&gt;
&lt;br /&gt;
Nõuded: riistvaralisi nõudeid oleks vist suhteliselt kohatu GIT kohta välja tuua. Ainukesed nõuded, mis on vajalikud, on paketipõhised ja üldjuhul on paketihaldurid nii targad, et tirivad ise kõik vajalikud lisapakid kohale. Ainuke asi, mida ma mainisin on Gitosis&#039;e python-setuptools, kuna see on tõesti fataalse olulisusega.&lt;br /&gt;
&lt;br /&gt;
Varundamine: väga hea tähelepanek. See on puudujääk, mille ma ka kindlasti lisan. Gibak&#039;i oleks pidanud kindlasti mainima, kuna see on tõsine ja paljude poolt kiidetud varundussüsteem. Ka üks hea link: http://www.bramschoenmakers.nl/en/node/551&lt;br /&gt;
&lt;br /&gt;
Taastamine: samuti hea leid. Teenust on muidugi lihtne taastada, hullem oleks juhul, kui andmed läheksid kaotsi. Andmed on üldjuhul kusagil mujal serveris, ning ei sõltu otseselt teenuse enese heaolust. GIT tuksikeeramise järel saab teda muidugi samade terminite järgi reinstalleerida nagu wikis kirjas. Loomulikult kui repository on mingil põhjusel &amp;quot;katki&amp;quot; siis pakub GIT võimalusi ka selle taastamiseks teatud piirideni.&lt;br /&gt;
&lt;br /&gt;
Ühesõnaga, esimese kahe punktiga ma pole nõus aga kahe viimase osas on kindlasti kirjutamist. (Tegelikult, et korralik ja ülevaatlik jutt GIT&#039;i ja tema võimaluste kohta teha, siis võtaks see meeletult rohkem aega ning &amp;quot;möllamist&amp;quot;).&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Git_paigaldamine&amp;diff=3623</id>
		<title>Talk:Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Git_paigaldamine&amp;diff=3623"/>
		<updated>2010-01-31T10:35:42Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Retsenseerija: Heigo Post AK41, 30.01.2010 19:41&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! KRITEERIUM&lt;br /&gt;
! KAAL&lt;br /&gt;
! HINNANG&lt;br /&gt;
! SELGITUS&lt;br /&gt;
! PÕHJUSED&lt;br /&gt;
|-&lt;br /&gt;
| Versioonide ajalugu&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Autorid&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Viimase muutmise aeg&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Skoop&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Skoop puudu - näidata millise distributsiooni kohta antud juhis kehtib.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Sissejuhatus&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Nõuded&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Nõuded puudu.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Installeerimise ja konfigureerimise osa&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Tehniliselt korrektne &lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Korraldused on tekstist eristatavad&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Käskude väljundid on tekstist eristatavad&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Muutuvad osad on eristatavad&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Tekst on loetav (struktuur on olemas)&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Tekst on arusaadav (laused on korrektsed)&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| Korras.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Teenuse varundamine&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
| Puudub(võiks olla - kasvõi näidata millistest failidest peaks varukoopiad tegema).&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Teenuse taastamine&lt;br /&gt;
| 2&lt;br /&gt;
| 0&lt;br /&gt;
| Puudub(võiks olla - kui on varukoopiad olemas siis näidata kuidas teenust lihtsalt taastada).&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Kokku&lt;br /&gt;
| 20&lt;br /&gt;
| 15&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Koostaja kommentaar:&lt;br /&gt;
                                   &lt;br /&gt;
                                                                                                  &lt;br /&gt;
Skoop: antud juhis kehtib ainult linux keskkonnas (igatahes pole kuulnud ega näinud kedagi windows keskkonnas GIT&#039;i naturaalselt kasutavat (cygwin jne ei ole vabandus)). Distributsioonide erinevuste kohta- väike märge on RedHat/Debian sisuliste paketihaldurite käskude kohta. Üldjuhul käib see ikkagi kõigi Linuxi ditributsioonide kohta. Seega selle punktiga ma pole rahul.&lt;br /&gt;
&lt;br /&gt;
Nõuded: riistvaralisi nõudeid oleks vist suhteliselt kohatu GIT kohta välja tuua. Ainukesed nõuded, mis on vajalikud, on paketipõhised ja üldjuhul on paketihaldurid nii targad, et tirivad ise kõik vajalikud lisapakid kohale. Ainuke asi, mida ma mainisin on Gitosis&#039;e python-setuptools, kuna see on tõesti fataalse olulisusega.&lt;br /&gt;
&lt;br /&gt;
Varundamine: väga hea tähelepanek. See on puudujääk, mille ma ka kindlasti lisan. Gibak&#039;i oleks pidanud kindlasti mainima, kuna see on tõsine ja paljude poolt kiidetud varundussüsteem. Ka üks hea link: http://www.bramschoenmakers.nl/en/node/551&lt;br /&gt;
&lt;br /&gt;
Taastamine: samuti hea leid. Teenust on muidugi lihtne taastada, hullem oleks juhul, kui andmed läheksid kaotsi. Andmed on üldjuhul kusagil mujal serveris, ning ei sõltu otseselt teenuse enese heaolust. GIT tuksikeeramise järel saab teda muidugi samade terminite järgi reinstalleerida nagu wikis kirjas. Loomulikult kui repository on mingil põhjusel &amp;quot;katki&amp;quot; siis pakub GIT võimalusi ka selle taastamiseks teatud piirideni.&lt;br /&gt;
&lt;br /&gt;
Ühesõnaga, esimese kahe punktiga ma pole nõus aga kahe viimase osas on kindlasti kirjutamist. (Tegelikult, et korralik ja ülevaatlik jutt GIT&#039;i ja tema võimaluste kohta teha, siis võtaks see meeletult rohkem aega ning &amp;quot;möllamist&amp;quot;).&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3593</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3593"/>
		<updated>2010-01-31T09:01:57Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Git kliendi paigaldus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git --version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3592</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3592"/>
		<updated>2010-01-31T09:01:17Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Git kliendi paigaldus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git ––version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3559</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3559"/>
		<updated>2010-01-30T18:17:33Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Git kliendi paigaldus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://jonas.nitro.dk/git/quick-reference.html&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3558</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3558"/>
		<updated>2010-01-30T17:51:37Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sissejuhatus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Artikli autor ja logi==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Git kliendi paigaldus: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Gitsosise installeerimine:&lt;br /&gt;
&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lingid ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3496</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3496"/>
		<updated>2010-01-30T11:46:06Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Lingid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3495</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3495"/>
		<updated>2010-01-30T11:45:47Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repositooriumit. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repositoorium.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Lingid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3494</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3494"/>
		<updated>2010-01-30T11:44:39Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“, kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Lingid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3493</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3493"/>
		<updated>2010-01-30T11:43:21Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Lingid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    http://www.youtube.com/watch?v=4XpnKHJAok8&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3492</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3492"/>
		<updated>2010-01-30T11:42:52Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Lingid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    http://book.git-scm.com/&lt;br /&gt;
    http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
    http://progit.org/book/&lt;br /&gt;
    [[Media:http://www.youtube.com/watch?v=4XpnKHJAok8]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3491</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3491"/>
		<updated>2010-01-30T11:42:32Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Lingid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://book.git-scm.com/&lt;br /&gt;
http://git.wiki.kernel.org/index.php/GitLinks&lt;br /&gt;
http://progit.org/book/&lt;br /&gt;
[[Media:http://www.youtube.com/watch?v=4XpnKHJAok8]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3482</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3482"/>
		<updated>2010-01-30T11:20:53Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
--[[User:Rsavolai|Rsavolai]] 13:20, 30 January 2010 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3481</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3481"/>
		<updated>2010-01-30T11:20:30Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
&lt;br /&gt;
 Mittelineaarse arenduse tugev support. &lt;br /&gt;
 Jaotatud arendus. &lt;br /&gt;
 Olemasolevate süsteemide/protokollidega kokkusobivus. &lt;br /&gt;
 Suurte projektide tõhus käsitlemine. &lt;br /&gt;
 Olemasolevate projektide krüptograafiline autentimine. &lt;br /&gt;
 Toolkit-baasil disain. &lt;br /&gt;
 Prahikoristus. &lt;br /&gt;
 Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3475</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3475"/>
		<updated>2010-01-30T11:11:14Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
Mittelineaarse arenduse tugev support.&lt;br /&gt;
Jaotatud arendus.&lt;br /&gt;
Olemasolevate süsteemide/protokollidega kokkusobivus.&lt;br /&gt;
Suurte projektide tõhus käsitlemine.&lt;br /&gt;
Olemasolevate projektide krüptograafiline autentimine.&lt;br /&gt;
Toolkit-baasil disain.&lt;br /&gt;
Prahikoristus.&lt;br /&gt;
Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    &lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3474</id>
		<title>Git paigaldamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Git_paigaldamine&amp;diff=3474"/>
		<updated>2010-01-30T11:10:31Z</updated>

		<summary type="html">&lt;p&gt;Rsavolai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[GIT]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sissejuhatus&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Git on hajutatud versioonihaldussüsteem, mis peab oluliseks versioonihalduse kiirust. Git sai alguse Linux tuuma arendusprotsessist. Tuuma lähtekoodi haldamiseks kasutati vahemikus 1999-2005 kinnise lähtekoodiga tarkvara BitKeeper, kuna tol hetkel puudus kiire hajutatud versioonihaldustarkvara. Vaba Tarkvara aktivistide sõnul oli lubamatu kasutada kinnise lähtekoodiga tarkvara Vaba Tarkvara arendamiseks ning peale pikka kogukonna survet töötas Linus Torvalds isiklikult välja sobiliku süsteemi. Hetkel hooldab projekti Junio Hamano.&lt;br /&gt;
Projekti nimeks sai Git, mis tuleb Briti slängist tähendades rumalat või ebameeldivat isikut - „Ma&lt;br /&gt;
olen enesekeskne värdjas ning nimetan kõik projektid enda järgi, kõigepealt Linux, nüüd Git“,&lt;br /&gt;
kommenteeris Linus nime.&lt;br /&gt;
Veebis on kõige populaarsemad Git repositooriumi portaalid GitHub ja Gitorious. GitHub lubab&lt;br /&gt;
Vaba Tarkvara arendajatele 300MB ruumi ning Gitorious piiramatus koguses. Veebis võib lehitseda lähtekoodi ning koodimuudatusi. Gitorious&#039;e puhul käib autentimine SSH võtmetega.&lt;br /&gt;
Git on hetkel ainus C keeles kirjutatud hajutatud versoonihaldustarkvara olles kiire ning&lt;br /&gt;
täites võimalikult palju funktsioone, mis on vajalikud avatud lähtekoodiga tarkvara arendamiseks – see tähendab tuhandete inimeste koostööks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Karakterisitkud:&lt;br /&gt;
Mittelineaarse arenduse tugev support.&lt;br /&gt;
Jaotatud arendus.&lt;br /&gt;
Olemasolevate süsteemide/protokollidega kokkusobivus.&lt;br /&gt;
Suurte projektide tõhus käsitlemine.&lt;br /&gt;
Olemasolevate projektide krüptograafiline autentimine.&lt;br /&gt;
Toolkit-baasil disain.&lt;br /&gt;
Prahikoristus.&lt;br /&gt;
Perioodiline pakendamine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Artikli autor ja logi=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nimi:&#039;&#039;&#039; Reigo Savolainen&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Grupp:&#039;&#039;&#039; AK31&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Viimati muudetud:&#039;&#039;&#039; 30.01.2010&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;margin: 2em 2em 2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:leftt; padding: 1em; border: 1px #aaa solid; background: #f9f9f9;&amp;quot; &lt;br /&gt;
|-style=&amp;quot;background: #e2e2e2;&amp;quot; &lt;br /&gt;
! Versioon !! Lisatud !! &amp;amp;nbsp; Kommentaar&lt;br /&gt;
|-&lt;br /&gt;
| 0.1 || 26.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  Artikli loomine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.1 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Esialgne sisu sisestus&lt;br /&gt;
|-&lt;br /&gt;
|0.1.2 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Artikli täiendamine&lt;br /&gt;
|-&lt;br /&gt;
|0.1.3 || 30.01.2010 || &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Valmis&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Git kliendi paigaldus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get build-dep git-core git-doc&lt;br /&gt;
    Download the latest stable release of Git from its web site http://git-scm.com/&lt;br /&gt;
    wget http://kernel.org/pub/software/scm/git/git-1.6.6.1.tar.bz2 &lt;br /&gt;
    &lt;br /&gt;
    Unpack the downloaded archive file. &lt;br /&gt;
    tar xjf git-1.6.6.1.tar.bz2&lt;br /&gt;
    &lt;br /&gt;
    Go into the unpacked folder.&lt;br /&gt;
    cd git-1.6.6.1/&lt;br /&gt;
    ./configure&lt;br /&gt;
    make prefix=/usr/local all doc&lt;br /&gt;
    sudo make install install-doc&lt;br /&gt;
    Remove the unpacked folder.&lt;br /&gt;
&lt;br /&gt;
Loomulikult on ka lihtsam tee, installides vajalikud paketid paketihalduriga.&lt;br /&gt;
    apt-get install git-core (Debian based)&lt;br /&gt;
    yum  install git-core (RedHat)&lt;br /&gt;
&lt;br /&gt;
Kolmanda variandina võib antud .deb või .rpm paketid otse tõmmata aadressidelt:&lt;br /&gt;
    http://www.backports.org/debian/pool/main/g/git-core/&lt;br /&gt;
    http://kernel.org/pub/software/scm/git/RPMS/&lt;br /&gt;
&lt;br /&gt;
Git versiooni näeme:&lt;br /&gt;
    git –version&lt;br /&gt;
&lt;br /&gt;
Juhul, kui on installitud Git eelnevalt ja välja on tulnud uuemad versioonid, siis Git uuendamiseks võib kasutada teda iseennast:&lt;br /&gt;
    git clone git://git.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
    git clone http://www.kernel.org/pub/scm/git/git.git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git repositooriumi serveri paigaldus Ubuntu keskkonnas (kasutades Gitosist):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gitsosise installeerimine&#039;&#039;&lt;br /&gt;
Gitosis on pythonil baseeruv programm, mis oskab hallata git repositooriumeid. Kõigepealt veendume, kas python setup tool’s on paigaldatud.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install python-setuptools&lt;br /&gt;
&lt;br /&gt;
Nüüd sikutame gitosise, kloonides ta originaalpaigast uude töökohta (../src). Peale seda installeerime.&lt;br /&gt;
&lt;br /&gt;
    cd ~ &amp;amp;&amp;amp; mkdir src &amp;amp;&amp;amp; cd src&lt;br /&gt;
    git clone git://eagain.net/gitosis.git&lt;br /&gt;
    cd gitosis&lt;br /&gt;
    python setup.py install&lt;br /&gt;
&lt;br /&gt;
Järgmiseks tekitame git kasutaja, kes saab manageerida repositooriume.&lt;br /&gt;
&lt;br /&gt;
    sudo adduser \&lt;br /&gt;
    --system \&lt;br /&gt;
    --shell /bin/sh \&lt;br /&gt;
    --gecos &#039;git version control&#039; \&lt;br /&gt;
    --group \&lt;br /&gt;
    --disabled-password \&lt;br /&gt;
    --home /home/git \&lt;br /&gt;
    git&lt;br /&gt;
&lt;br /&gt;
Kui kõik hästi läheb siis on tulemus midagi sarnast:&lt;br /&gt;
	&lt;br /&gt;
    Adding system user `git&#039;...&lt;br /&gt;
    Adding new group `git&#039; (211).&lt;br /&gt;
    Adding new user `git&#039; (211) with group `git&#039;.&lt;br /&gt;
    Creating home directory `/home/git&#039;.&lt;br /&gt;
&lt;br /&gt;
Jätkamiseks on meil vaja avalikku SSH võtit.&lt;br /&gt;
&lt;br /&gt;
    ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
    sudo -H -u git gitosis-init &amp;lt; /tmp/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
Õnnestumise korral annab sellise teate:&lt;br /&gt;
&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
    Initialized empty Git repository in ./&lt;br /&gt;
&lt;br /&gt;
Järgnevalt kontrollime konfiguratsiooni ja muudame seda pisut:&lt;br /&gt;
&lt;br /&gt;
    git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git&lt;br /&gt;
    cd gitosis-admin&lt;br /&gt;
    sudoedit gitosis.conf&lt;br /&gt;
&lt;br /&gt;
Võib lisada vabalt valitud gruppe, kes saavad lugeda/kirjutada repositooriumis. Praegusel juhul, kirjeldame uue projekti, ning anname kasutajale selles grupis õigused.&lt;br /&gt;
&lt;br /&gt;
    [group test]&lt;br /&gt;
    members = user@email.com&lt;br /&gt;
    writeable = test_project&lt;br /&gt;
    daemon = yes&lt;br /&gt;
&lt;br /&gt;
Kui fail on salvestatud ja repositooriumiga ühendatud, siis...&lt;br /&gt;
&lt;br /&gt;
    commit -a -m &amp;quot;Added group test and test_project in group test.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...siis Gitosis tekitab automaatselt uue repositooriumi. Viimane parameeter ’daemon’ näitab, et git-daemon võib vabalt kuvada käesolevat repot. Võib testida:&lt;br /&gt;
&lt;br /&gt;
    sudo -u git git-daemon --base-path=/home/git/repositories/ --export-all&lt;br /&gt;
&lt;br /&gt;
Nüüd peaks sul olema võimalik ligi pääseda oma lokaalsest masinast, näiteks kloonides projekti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Git-daemoni konfigureerimine Ubuntus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git-daemon-run&lt;br /&gt;
    sudo runsvdir /etc/service &amp;amp;&lt;br /&gt;
    sudo vi /etc/sv/git-daemon/run&lt;br /&gt;
    -&amp;gt; changed the exec line to look like this:&lt;br /&gt;
    -&amp;gt; exec git-daemon --verbose --base-path=/var/git&lt;br /&gt;
    sudo /etc/init.d/git-daemon-run start&lt;br /&gt;
    touch /var/git/myrepo.git/git-daemon-export-ok&lt;br /&gt;
    git clone git://my-box/myrepo.git myrepo&lt;br /&gt;
&lt;br /&gt;
Nüüd peaksid saama teha tööd oma git serveris aadressil git://sinuserver/sinu_repo.git&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Rsavolai</name></author>
	</entry>
</feed>