This is an old revision of the document!


02. [30p] You vs grep

[15p] Task A - Your grep

Write a python3 script that receives a list of files from stdin (one per line) and an arbitrary number of words as command line arguments. The script must search for these words in each file and output each line that contains at least one of them in this format:

<file_name>:<line_number>:<line>

Note that if a line contains more than one word, it still must appear only once in your output. Your program should be run like this:

$ find . | ./my_grep.py import for sys

[10p] Task B - Compare to grep

Use any commands that you have learned in this or any other lab to compare your implementation to that grep (at least one must be related to I/O). Test case:

$ find /usr/include/ | ./my_grep.py int include define for
$ grep -rn "int\|include\|define\|for" /usr/include/
$ grep -Frn -f <(echo "int\ninclude\ndefine\nfor") /usr/include

What algorithm does grep use? How does grep -F differ from fgrep?

[5p] Task C - Aho-Corasick

Read up a bit about Aho-Corasick. Explain to your assistant how it works.

ep/labs/03/contents/tasks/ex3.1570982408.txt.gz ยท Last modified: 2019/10/13 19:00 by radu.mantu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0