Skörda tabeller
Kommandoprompten är helt underbar när det gäller att samla ihop och bearbeta tabelldata av olika slag. Det gör inte mycket om tabellerna råkar vara jättestora heller, men här har vi en liten exempeltabell, bara så att det blir överblickbart:
adam, bensin, 540
cecilia, bullar, 30
david, hamburgare, 200
bea, fika, 80
cecilia, liftkort, 2000
bea, hyrskidor, 3000
david, systemet, 800
adam, fika, 150
adam, bensin, 500
adam, hotell, 2500
david, restaurang, 900
Tabellen har jag sparat i en ren textfil, som heter just tabell. Tabellen är förstås fejkad, men det ska föreställa resultatet av en liten skidresa och nu efter resan gäller det att reda upp vem som betalat vad och dela upp kostnaderna. i börjar med att plocka fram totalsumman:
urban@yoda:~$ cat tabell | awk -F',' '{sum+=$3}END{print sum}'
10700
Vi använder här cat för att läsa innehållet i filen och skickar det till awk, som är ett litet programspråk. Vi talar om för awk att filen är kommaseparerad och att vi vill att det som står i kolumn 3 ska läggas in i variabeln sum och att den se'n ska skrivas ut när allt är klart. Är det hundratusen rader i tabellen kan det ta några sekunder, men här går det blixtsnabbt.
Okej, nu är vi nyfikna på hur stor del av utläggen som David har stått för:
urban@yoda:~$ grep david tabell | awk -F',' '{sum+=$3}END{print sum}'
1900
Samma som ovan, men vi låter grep välja ut rader som det står david på.
Så är vi kanske nyfikna på vilka varuslag som Adam har skött inhandlingen av:
urban@yoda:~$ grep adam tabell | awk -F',' '{print $2}'
bensin
fika
bensin
hotell
Vi väljer med grep ut de rader som det står adam på och skriver ut den andra kolumnen med awk. Men det blev ju inte så snyggt vi vill, tabellen är inte i ordning och vissa varuslag står flera gånger. Det löser vi lätt!
urban@yoda:~$ grep adam tabell | awk -F',' '{print $2}' | sort | uniq
bensin
fika
hotell
Vi gör samma som ovan, men sorterar datat med sort och släpper bara igenom unika förekomster av ett visst ord med uniq.
Det är klart, du som inte gillar kommandoprompten och väljer grafiska verktyg till varje pris, kan förmodligen göra ungefär samma saker i något kalkylprogram. Leta efter "pivottabeller" eller "datapilot" som är en kraftfull finess med olika namn. Kanske kommer det en repris på den här övningen baserad på OpenOffice.org någon gång?
Tänk på att kommandoprompten helst "käkar" rena textfiler. Ordbehandlingsprogram lägger till en massa skräptecken för formatteringar och liknande som gör filerna svårbearbetade. Spara som txt, så kan det fungera, men allra helst, använd en riktig texteditor.