Homework 3 -- due Oct. 9
02 Oct 2011For this homework assignment, you'll be creating several text files by using
command line utilities. In addition, create another text file called
csc110-hw3.txt
to contain answers to other questions.
See this post for a summary of the command line concepts we covered in class, as well as links to more information and reference sites.
To submit your homework, create a zip file containing all the files you're asked to create, and email to jal2016@email.vccs.edu with subject "CSC 110 hw3".
On Windows, you can create a zip file by moving all of your files to a folder, and then right-clicking on the folder and choosing "Send to / zip file".
The
/b
flag causes thedir
command to list just filenames (no other information). Create a text file that contains the contents ofC:\Windows\System32
. Create a second text file that contains the same files, except listed in reverse alphabetical order, by piping the output of your first command through a call tosort /r
(thesort
command sorts its input, and the/r
flag specifies that it should be sorted in reverse order).Browse this command line reference site, and select three commands you'd like to try out. (Read the descriptions to make sure that they don't do anything destructive to your comptuer). You can also type
help
at the command line for a summary of some of the available commands. For each command, execute the command and redirect the output to a file calledcommand-name.txt
(except replacecommand-name
with the actual name of the command you choose).For example, if I chose the
dir
command, I would executedir > dir.txt
. You should choose commands we have not already used in class.Submit the two files you create as part of your homework zip file. In addition, in your homework answers file, briefly describe each command and explain why they're useful.
Run the following commands:
set a=1 set b=2 set ab=%a% + %b% set /a c=%a% + %b%
After running those commands, what is the output of the following commands?
echo c = %c% echo ab = %ab%
What are the commands you'd run to execute the following?
- Create a variable named
x
with value1234
. - Create a variable named
y
and set it to the value ofx
squared. - Print the value of
y
.
- Create a variable named
Download this copy of The Adventures of Huckleberry Finn from Project Gutenberg.
This exercise will use the
find
command to answer some questions about the book's contents. The commandfind "ABC" FILENAME
prints all lines inFILENAME
that contain the letters "ABC". The commandfind "ABC"
without a filename prints all the lines from standard input that contain "ABC". There are some useful flags for thefind
command./i
makes the search case-insensitive (so the above would match both "ABC" and "abc" or "aBC", etc.)./c
causes the command to print only a count of the lines it found.- How many lines contain "Huck"?
- How many lines contain "Jim"?
- Create a text file that contains all the lines that contain "Jim".
- How many lines contain both "Huck" and "Jim"? Hint: Use one
find
command to find all the "Huck" lines, and pipe the output to anotherfind
command that finds the "Jim" lines.
Sometimes we want to search something more structured than just a few letters. For example, we might want to match a full word, or find words that start with a given letter. The
findstr
command can accomplish this. It allows special formatting in the target argument that allows those kind of patterns.Here are some examples:
findstr "\<A"
finds all lines with a word that starts with "A"findstr "b\>"
finds all lines with a word that ends with "b"findstr "abc.e"
finds all lines that contain "abc?e", where "?" can be any single character.findstr "abc[a-z]*e"
finds all lines that contain "abc?e", where "?" can consist of one or more letter from "a" to "z".
Using the
findstr
command, do the following:- Create a text file that contains all the lines that have
a word that starts with "q". How can you combine this with a call
to
find /c
that will count up all such lines for you? - Create a text file that contains all the lines that have a word that starts with "a" and ends with "b".