Python script to be run on the Unix timeshare, called Search. This program will emulate the most elementary functionalit

Business, Finance, Economics, Accounting, Operations Management, Computer Science, Electrical Engineering, Mechanical Engineering, Civil Engineering, Chemical Engineering, Algebra, Precalculus, Statistics and Probabilty, Advanced Math, Physics, Chemistry, Biology, Nursing, Psychology, Certifications, Tests, Prep, and more.
Post Reply
answerhappygod
Site Admin
Posts: 899603
Joined: Mon Aug 02, 2021 8:13 am

Python script to be run on the Unix timeshare, called Search. This program will emulate the most elementary functionalit

Post by answerhappygod »

Python Script To Be Run On The Unix Timeshare Called Search This Program Will Emulate The Most Elementary Functionalit 1
Python Script To Be Run On The Unix Timeshare Called Search This Program Will Emulate The Most Elementary Functionalit 1 (243.69 KiB) Viewed 79 times
Python script to be run on the Unix timeshare, called Search. This program will emulate the most elementary functionality of the grep command in Unix. The command $ grep <string> <file> where <string> is a string and <file> is a text file in your current working directory, prints all lines in file <file> that contain the substring <string>. Depending on your terminal settings, it may also highlight the occurrences of <string> in a different color. Download the files Tolkien1 and Tolkien2 - place them in a convenient directory on the timeshare (like ~/cse20/lab5). From within that directory, type $ grep Ring Tolkien1 and observe that all lines containing instances of the string 'Ring' are printed. Notice that there are 4 instances, and one instance is within the word "Rings". Thus, we see that grep is finding substrings of each line, considered as a large string. You can also search for strings that contain spaces, as long as you enclose that string in quotes (which you may do in any case.) Try doing $ grep 'nd t' Tolkieni to find two instances. Any string that contains characters having a special meaning to the bash interpreter, such as the space, must be enclosed in quotes. For instance, if you search for a semi-colon ; by doing $ grep ; Tolkien2 the interpreter thinks you are running two commands: grep (which gives you a usage message because you gave it no arguments), followed by Tolkien2 (which gives a warning because the file is not executable). On the other hand $ grep ';' Tolkien2 sucsessfully locates two occurrences of ; within Tolkien2. ; The command grep stands for: Globally search for a REgular expression and Print matching lines. A regular expression, or regex, is a sequence of characters that specifies a search pattern. The simplest possible such pattern is just a string to be searched for and matched, as demonstrated in the above examples. More complex regular expressions can be used by grep to match sets of strings rather than just a single string. We will not cover more advanced regular expressions here. Your search program will emulate the functionality of the grep on these elementary examples. Google the term regular expression to learn more about this important concept, or do man grep to learn more about the functionality of the grep command. The output of Search will differ from that of grep in an essential way however. Instead of printing out the lines with matching occurrences of <string>, Search will state the line number and column number of (the beginning of each occurrence of<string> within<file>. We illustrate the operation of Search below on all of the preceding examples, and a few more.

Tolkien1.txt Three Rings for the Elven-kings under the sky, Seven for the dwarf-lords in their halls of stone, Nine for Mortal Men doomed to die, One for the Dark Lord on his dark throne, In the Land of Mordor where the Shadows lie. One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them In the Land of Mordor where the Shadows lie.

Tolkien2.txt Last of all Hurin stood alone. Then he cast aside his shield, and wielded an axe two-handed; and it is sung that the axe smoked in the black blood of the troll-guard of Gothmog until it withered, and each time that he slew Hurin cried: 'Aure entuluva! Day shall come again!' Seventy times he uttered that cry, but they took him at last alive, by the command of Morgoth, for the Orcs grappled him with their hands, which clung to him still through he hewed off their arms; and ever their numbers were renewed, until at least he fell buried beneath them. Then Gothmog bound him and dragged him to Angband with mockery.

$ Search Ring Tolkien1 'Ring' found at: line 1, column 7 line 6, column 5 line 6, column 32 line 7, column 5 $ Search "nd t' Tolkien1 'nd t' found at: line 6, column 42 line 7, column 50 $ Search ';' Tolkien2 ';' found at: line 2, column 26 line 8, column 5 $ Search Ring Tolkien2 'Ring' not found $ Search Ring Usage: Search <string> <file> $ Search Usage: Search <string> <file> $ As always, your output must match the above format exactly Observe that if the user does not have exactly two command line arguments after the Search command, a usage message will be printed. The basic algorithm for this program will be to get each line of <file>, and search for all occurrences of the substring <string> within that line. When you find a match, save the line number and the position in the line at which the substring begins. When all lines have been searched, print out your match positions in the proper format, or print a message stating that the substring was not found. Note that when counting lines and columns, your counts must begin at 1, not at 0. See the following examples to learn different ways to iterate over the lines in a file. /Examples/Filel.py /Examples/File2.py /Examples/File.py /Examples/File.py /Examples/pa 6/FileCopy.py Also, see the documentation of function str.find() at https://docs.python.org/3.9/library/std ... e-type-str

# main() def main(): # read all lines into a list f = open('Matrix.py') # default mode is 'r' L = f.readlines (). f.close() # print the list print() print(L) print() # L.sort # print to a back-up file g = open('Matrix.py.bak', 'w') for line in L: g.write(line) # note that write() does not insert a newline # end for g.close() # another way to print to a file g = open( 'Matrix.py-2.bak', 'W') # re-use the file variable g for line in L: print(line, end='' file=g) # print() does insert a newline, supress it # end for g.close(). # end main() # if name ==' main main() # end if
Join a community of subject matter experts. Register for FREE to view solutions, replies, and use search function. Request answer by replying!
Post Reply