Bij grote softwareprojecten willen we vaak achterhalen in welke broncodebestanden een bepaalde variabele of constante gedefinieerd en/of gebruikt wordt. Schrijf een bash shell script broncode waaraan drie argumenten moeten doorgegeven worden:

  1. de padnaam van een directory,

  2. een bestandextensie (het gedeelte na het laatste punt in de naam van het bestand) en

  3. de naam van een variabele of constante.

Het script moet zoeken waar en in welke tekstbestanden regels aangetroffen worden die de naam van de variabele of de constante vermelden. Enkel de tekstbestanden in de opgegeven directory en de onderliggende subdirectories die een naam hebben die eindigt op de opgegeven extensie moeten doorzocht worden. Voor elke broncoderegel waarop de naam gevonden wordt, moet het script een regel naar standaard uitvoer schrijven die de volgende drie informatievelden bevat (van elkaar gescheiden door een dubbelpunt):

  1. de naam van het bestand waarin de broncoderegel voorkomt,

  2. het regelnummer binnen dat bestand en

  3. de broncoderegel zelf.

Let op: de gevonden uitvoer moet gesorteerd worden volgens bestandsnaam (alfabetisch, oplopend) en bij gelijke bestandsnaam moet gesorteerd worden op regelnummer (oplopend).

Voorbeeld

$ broncode /usr/lib py spam
/usr/lib/python2.5/site.py:36:with three subdirectories, foo, bar and spam, a...
/usr/lib/python2.5/site.py:56:because bar.pth comes alphabetically before foo...
/usr/lib/python2.5/cgitb.py:32:    return <!--: spam
$ broncode /usr/share pl foobar
/usr/share/doc/swig2.0-examples/test-suite/perl5/exception_order_runme.pl:18:...
/usr/share/doc/swig2.0-examples/perl5/multiple_inheritance/runme.pl:15:print ...
/usr/share/doc/swig2.0-examples/perl5/multiple_inheritance/runme.pl:16:$foo_B...