Tekstmanipulatie Week 2: Zoeken in Tekst Gosse Bouma g.bouma@rug.nl Informatiekunde Rijksuniversiteit Groningen 2007/2008 Gosse Bouma 1/19
Overzicht 1 Bestandstypen en rechten 2 Wildcards in Bestandsnamen 3 Pipes 4 Zoeken naar woorden en patronen Gosse Bouma 2/19
Types bestanden gosse@forsati:~/studie/tekstmanipulatie$ ls -l total 20K drwxr-xr-x 2 gosse aistaff 4.0K 2007-10-30 14:13 Literatuur lrwxrwxrwx 1 gosse aistaff 28 2007-11-09 09:43 logos -> / -rw-r--r-- 1 gosse aistaff 2.3K 2007-11-05 13:44 opzet.txt drwxr-xr-x 2 gosse aistaff 4.0K 2007-11-06 15:10 Week1/ Bestandstypen en rechten Eerste 10 velden = type bestand en rechten Eerste letter geeft het type bestand aan - = een gewoon bestand d = directory (map) l = link (snelkoppeling) Gosse Bouma 3/19
Types bestanden gosse@forsati:~/studie/tekstmanipulatie$ ls -l total 20K drwxr-xr-x 2 gosse aistaff 4.0K 2007-10-30 14:13 Literatuur lrwxrwxrwx 1 gosse aistaff 28 2007-11-09 09:43 logos -> / -rw-r--r-- 1 gosse aistaff 2.3K 2007-11-05 13:44 opzet.txt drwxr-xr-x 2 gosse aistaff 4.0K 2007-11-06 15:10 Week1/ Bestandstypen en rechten Eerste 10 velden = type bestand en rechten Eerste letter geeft het type bestand aan - = een gewoon bestand d = directory (map) l = link (snelkoppeling) Gosse Bouma 3/19
Links Een link (snelkoppeling) is een verwijzing naar een ander bestand Voordelen: Zo vind je het bestand gemakkelijk Er wordt geen copie van het bestand gemaakt Wijzigingen in het origineel zijn automatisch ook zichtbaar via de link Het commando ln -s Origineel Link maakt (symbolische) links gosse@forsati:~/tekstman$ ln -s ~/papers/logos logos Gosse Bouma 4/19
Links Een link (snelkoppeling) is een verwijzing naar een ander bestand Voordelen: Zo vind je het bestand gemakkelijk Er wordt geen copie van het bestand gemaakt Wijzigingen in het origineel zijn automatisch ook zichtbaar via de link Het commando ln -s Origineel Link maakt (symbolische) links gosse@forsati:~/tekstman$ ln -s ~/papers/logos logos Gosse Bouma 4/19
Rechten bestanden Rechten en toegang Op een linux systeem werken meestal meerdere gebruikers Rechten geven aan wie wat mag doen met welke bestanden Gosse Bouma 5/19
Rechten bestanden gosse@forsati:~/studie/tekstmanipulatie$ ll total 20K drwxr-xr-x 2 gosse aistaff 4.0K... Opgave1/ -rw-r--r-- 1 gosse aistaff 2.3K... opzet.txt drwxr-xr-x 2 gosse aistaff 4.0K... Week1/ r = readable (leesbaar) w = writable (schrijfbaar) x = executable (programma) kolommen 2-4 = Rechten van de eigenaar van het bestand kolommen 5-7 = Rechten van personen in dezelfde groep kolommen 8-10 = Andere gebruikers Gosse Bouma 6/19
Wildcards in bestandsnamen gosse@linux-4a60:~/test> ls blauw.html groen.html rood.html blauw.txt groen.txt rood.txt gosse@linux-4a60:~/test> ls *.html blauw.html groen.html rood.html gosse@linux-4a60:~/test> ls????.* rood.html rood.txt gosse@linux-4a60:~/test> ls [rg]*.html groen.html rood.html gosse@linux-4a60:~/test> ls *o*.html groen.html rood.html Gosse Bouma 7/19
Wildcards in bestandsnamen *? en [] * = willekeurig aantal tekens? = precies 1 teken [abc] = a of b of c Gosse Bouma 8/19
Pipes Stel dat je wilt weten hoeveel.html bestanden er in een directory staan ls *.html geeft de html bestanden wc -l telt regels Je zou het aantal regels in de output van ls willen tellen Gebruik hiervoor een pipe ( ) Een pipe zorgt ervoor dat de uitvoer van het eerste commando wordt gebruikt als invoer van het tweede commando. gosse@linux-4a60:~/test> ls *.html wc -l 3 Gosse Bouma 9/19
Pipes Stel dat je wilt weten hoeveel.html bestanden er in een directory staan ls *.html geeft de html bestanden wc -l telt regels Je zou het aantal regels in de output van ls willen tellen Gebruik hiervoor een pipe ( ) Een pipe zorgt ervoor dat de uitvoer van het eerste commando wordt gebruikt als invoer van het tweede commando. gosse@linux-4a60:~/test> ls *.html wc -l 3 Gosse Bouma 9/19
Zoeken naar Woorden In welke gedichten komt het woord herfst (niet) voor? In welke zinnen komt de reeks dde of de de voor? In welke zinnen komen woorden voor die beginnen met ge- en eindigen op -dt? Welke woorden komen vaak in SPAM mail voor? Gosse Bouma 10/19
Grep Het commando grep zoekt naar woorden in een tekst grep oranje wikipedia.txt gosse@linux-4a60:~/test> grep oranje wikipedia.txt De oranje kleur in de Nederlandse vlag wordt vervangen door Natriumlampen (geven een oranje-geel licht) De kleuren van de regenboog: rood, oranje, geel, groen, bla... Gosse Bouma 11/19
Grep Het commando grep zoekt naar woorden in een tekst grep oranje wikipedia.txt gosse@linux-4a60:~/test> grep oranje wikipedia.txt De oranje kleur in de Nederlandse vlag wordt vervangen door Natriumlampen (geven een oranje-geel licht) De kleuren van de regenboog: rood, oranje, geel, groen, bla... Gosse Bouma 11/19
Grep Grep kan in meerdere bestanden tegelijk zoeken grep Edeling SaraBurgerhart/*.htm gosse@linux-4a60:~/sb> grep Edeling *.htm 030.htm:broeder <strong>cornelis Edeling</strong>.</p> 053.htm:Edeling gehouden, afschrijven.</p> 054.htm:den heer <strong>hendrik Edeling</strong>.</p> 057.htm:<p>Den ouden heer Edeling ken ik van voor vele jare... Gosse Bouma 12/19
Grep Grep kan in meerdere bestanden tegelijk zoeken grep Edeling SaraBurgerhart/*.htm gosse@linux-4a60:~/sb> grep Edeling *.htm 030.htm:broeder <strong>cornelis Edeling</strong>.</p> 053.htm:Edeling gehouden, afschrijven.</p> 054.htm:den heer <strong>hendrik Edeling</strong>.</p> 057.htm:<p>Den ouden heer Edeling ken ik van voor vele jare... Gosse Bouma 12/19
Grep Grep Opties Optie grep -w oranje grep -i oranje grep -c oranje grep -colour oranje grep -colour -iw oranje Effect Alleen volledige woorden Case-insensitive Count van het aantal matchende regel Geef matching strings aan met een kle Alles samen Gosse Bouma 13/19
Zoekpatronen Soms wil je zoeken op patronen met een spatie of patronen met een < $ " etc Gebruik dan quotes gosse@linux-4a60:~/sb> grep Sara Brugerhart *.htm 001.htm:Mejuffrouw <strong>sara Burgerhart</strong>.</p> 027.htm:<p>De lieve juffrouw Sara Burgerhart heeft, 080.htm:Kort gezegd, ik blijf Sara Burgerhart.... Gosse Bouma 14/19
Grep en less Wanneer grep veel matching regels vindt, loopt je scherm vol. Wanneer je alle matches wilt zien, kun je het resultaat van grep naar less pipen: grep -color -iw oranje wikipedia.txt less Gosse Bouma 15/19
Grep en wc wc -l [01]*.htm... 134 173.htm 63 174.htm 59 175.htm 18079 total grep -c Edeling [01]*.htm 173.htm:1 174.htm:1 175.htm:0 Stel dat je wilt weten hoe vaak Edeling in alle SB brieven voorkomt? Gosse Bouma 16/19
Grep en wc grep Edeling *.htm wc -l 316 grep -o Edeling 167.htm:Edeling Edeling 167.htm:Edeling grep -o Edeling *.htm wc -w 319 grep -o geeft alleen matching deel van een regel weer. Gosse Bouma 17/19
Grep en wc grep Edeling *.htm wc -l 316 grep -o Edeling 167.htm:Edeling Edeling 167.htm:Edeling grep -o Edeling *.htm wc -w 319 grep -o geeft alleen matching deel van een regel weer. Gosse Bouma 17/19
Cat en Grep cat *.htm grep -c Edeling 316 cat [01]*.htm grep -o Edeling wc -w 319 Gosse Bouma 18/19
Bestanden waarin een woord voorkomt Stel dat je wilt weten in hoeveel brieven de naam Edeling valt? grep -l geeft de namen van de bestanden die een match opleveren. grep -l Edeling [0-1]*.htm 026.htm 030.htm 031.htm... grep -l Edeling [0-1]*.htm wc -l 86 Gosse Bouma 19/19