[AWK]Leestekens uit tekst filteren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 32701

Topicstarter
Ik heb een opdracht om van een tekst de woorden op alfabetische volgorde te zetten en per woord bij te houden op welke pagina en welke regel van het bestand het woord voorkomt. Dit moet echter zonder de leestekens. Hoe krijg ik deze allemaal uit de tekst gefilterd?

Voor alle duidelijkheid, de opdracht moet met awk of nawk uitgevoerd worden.

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 09-02-2023
simpel toch: ieder lettertje overlopen, als het lettertje geen leesteken is, dan deze letter in een nieuwe string proppen, indien het wel een is, leesteken overslaan.

om te sorteren kun je bubbelshorts gebruiken... je moet maar eens opzoeken hoe je die programmeert :)

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

Anoniem: 20531

Wat is AWK of nawk ?

Acties:
  • 0 Henk 'm!

Anoniem: 32701

Topicstarter
Op woensdag 12 juni 2002 20:18 schreef -Avalanche- het volgende:
simpel toch: ieder lettertje overlopen, als het lettertje geen leesteken is, dan deze letter in een nieuwe string proppen, indien het wel een is, leesteken overslaan.

om te sorteren kun je bubbelshorts gebruiken... je moet maar eens opzoeken hoe je die programmeert :)
Bubblesorts ken ik wel ja. Dat deel van de opdracht lukt me wel, maar ieder lettertje overlopen in awk of nawk is nogal lastig. Ik weet niet hoe je dat moet programmeren, want awk is een scripting taal (in unix/linux) waarmee je kunt zoeken naar bepaalde combinatie's van tekens in een tekst, maar om nou elk leesteken als aparte zoekterm te gaan opzoeken lijkt me een beetje vergezocht. Is er geen makkelijkere manier? Is het niet mogelijk om een verzameling van tekens op te geven waarbinnen de string moet vallen om geldig te zijn?

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 09-02-2023
Op woensdag 12 juni 2002 20:25 schreef Tifosi het volgende:

[..]

Bubblesorts ken ik wel ja. Dat deel van de opdracht lukt me wel, maar ieder lettertje overlopen in awk of nawk is nogal lastig. Ik weet niet hoe je dat moet programmeren, want awk is een scripting taal (in unix/linux) waarmee je kunt zoeken naar bepaalde combinatie's van tekens in een tekst, maar om nou elk leesteken als aparte zoekterm te gaan opzoeken lijkt me een beetje vergezocht. Is er geen makkelijkere manier? Is het niet mogelijk om een verzameling van tekens op te geven waarbinnen de string moet vallen om geldig te zijn?
spijtig genoeg ken/kan ik geen AWK. Is er anders geen mogelijkheid om met OR of zoiets te werken.

post eens een stukje code anders ...

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 17-04 16:44
Als je matcht op [^,\.:;] enz krijg je toch alles zonder leestekens?

Acties:
  • 0 Henk 'm!

Anoniem: 32701

Topicstarter
Hoe zorg ik dan dat ik alleen de leestekens weghaal en niet het hele veld (woord) waaraan dat leesteken vast zit? Ik heb tot nu toe dit:
code:
1
2
nawk 'BEGIN {aantal = '$1'}
    length($1) > 0  {print $1,NR%aantal,(NR - NR%aantal)/ aantal}' test.txt

Hiermee heb ik de woorden netjes met de regelnummers en paginanummers erachter. (De '$1' is een variabele die als argument wordt meegegeven en geeft het aantal regels per pagina weer.)

Hierna moeten ze nog gesorteerd worden, maar dat lukt me wel. Alleen zitten er nu nog punten en komma's enzo aan de woorden vast.

Acties:
  • 0 Henk 'm!

Anoniem: 32701

Topicstarter
Ok, het is me gelukt, door de field separator anders in te stellen, maar nou had ik nog een vraagje. Weet iemand hoe je makkelijk alle letters in een tekst omzet naar lower case (dus kleine letters)?
Pagina: 1