Overzicht Tekstmanipulatie Week 2: Zoeken in Tekst Gosse Bouma g.bouma@rug.nl Informatiekunde Rijksuniversiteit Groningen Bestandstypen en rechten Wildcards in Bestandsnamen Pipes 2007/2008 Zoeken naar woorden en patronen Types bestanden Types bestanden gosse@forsati:~/studie/tekstmanipulatie$ ls -l total 20K drwxr-xr-x 2 gosse aistaff 4.0K 2007-10-30 14:13 Literatuur/ gosse@forsati:~/studie/tekstmanipulatie$ ls -l total 20K drwxr-xr-x 2 gosse aistaff 4.0K 2007-10-30 14:13 Literatuu 28 2007-11-09 09:43 logos -> /storage/gosse/papers/logos// lrwxrwxrwx 1 gosse aistaff 28 2007-11-09 09:43 logos -> lrwxrwxrwx 1 gosse aistaff -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/ -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)
Links 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 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 Rechten bestanden Rechten bestanden Rechten en toegang Op een linux systeem werken meestal meerdere gebruikers Rechten geven aan wie wat mag doen met welke 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
Wildcards in bestandsnamen 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 *? en [] * = willekeurig aantal tekens? = precies 1 teken [abc] = a of b of c 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. 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
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 geen eindigen op -dt? Welke woorden komen vaak in SPAM mail voor? Het commando grep zoekt naar woorden in een tekst grep oranje wikipedia.txt Het commando grep zoekt naar woorden in een tekst grep oranje wikipedia.txt kan in meerdere bestanden tegelijk zoeken grep Edeling SaraBurgerhart/*.htm gosse@linux-4a60:~/test> grep oranje wikipedia.txt De oranje kleur in de Nederlandse vlag wordt vervangen door rood. Natriumlampen (geven een oranje-geel licht) De kleuren van de regenboog: rood, oranje, geel, groen, blauw, indigo, violet,
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 jaren. 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 rege Geef matching strings aan met een k Alles samen Zoekpatronen en less 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.... 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
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 en wc grep Edeling *.htm wc -l 316 Stel dat je wilt weten hoe vaak Edeling in alle SB brieven voorkomt? en wc grep Edeling *.htm wc -l 316 grep -o Edeling 167.htm:Edeling Edeling 167.htm:Edeling grep -o geeft alleen matching deel van een regel weer. Cat en cat *.htm grep -c Edeling 316 cat [01]*.htm grep -o Edeling wc -w 319 grep -o Edeling *.htm wc -w 319 grep -o geeft alleen matching deel van een regel weer.
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