Книга: Fedora™ Unleashed, 2008 edition
Searches for a String in Input with grep
Searches for a String in Input with grep
The grep
command, like find
, is an incredibly powerful search tool in the right hands. Unlike find
, though, grep
processes any text, whether in files, or just in standard input.
The basic use of grep
is this:
$ grep "some text" *
That query searches all files in the current directory (but not subdirectories) for the string some text
and prints matching lines along with the name of the file. To enable recursive searching in subdirectories, use the -r
parameter, like this:
$ grep -r "some text" *
Each time a string is matched within a file, the filename and the match are printed. If a file contains multiple matches, each of the matches is printed. You can alter this behavior with the -l
parameter (lowercase L), which forces grep
to print the name of each file that contains at least one match, without printing the matching text. If a file contains more than one match, it is still printed only once. Alternatively, the -c
parameter prints each filename that was searched and includes the number of matches at the end, even if there were no matches.
You have a lot of control when specifying the pattern to search for. You can, as previously, specify a simple string like some text
, or you can invert that search by specifying the -v
parameter. For example, this returns all the lines of the file myfile.txt
that do not contain the word hello
:
$ grep -v "hello" myfile.txt
You can also use regular expressions for your search term. For example, you can search myfile.txt
for all references to cat
, sat
, or mat
with this command:
$ grep "[cms]at" myfile.txt
Adding the -i
parameter to that removes case sensitivity, matching Cat
, CAT
, MaT
, and so on:
$ grep -i [cms]at myfile.txt
The output can also be controlled to some extent with the -n
and --color
parameters. The first tells grep
to print the line number for each match, which is where it appears in the source file. The --color
parameter tells grep
to color the search terms in the output, which helps them stand out when among all the other text on the line. You choose which color you want, using the GREP_COLOR
environment variable: export GREP_COLOR=36
gives you cyan, and export GREP_COLOR=32
gives you lime green.
This next example uses these two parameters to number and color all matches to the previous command:
$ grep -in --color [cms]at myfile.txt
Later you will see how important grep
is for piping with other commands.
- Printing the Contents of a File with cat
- Changing Directories with cd
- Changing File Access Permissions with chmod
- Copying Files with cp
- Printing Disk Use with du
- Finding Files by Searching with find
- Searches for a String in Input with grep
- Paging Through Output with less
- Creating Links Between Files with ln
- Finding Files from an Index with locate
- Listing Files in the Current Directory with ls
- Reading Manual Pages with man
- Making Directories with mkdir
- Moving Files with mv
- Listing Processes with ps
- Deleting Files and Directories with rm
- Printing the Last Lines of a File with tail
- Printing Resource Usage with top
- Printing the Location of a Command with which
- Forced writes - палка о двух концах
- Forced Writes
- Chapter 15. Graphical User Interfaces for Iptables
- What NAT is used for and basic terms and expressions
- Using Double Quotes to Resolve Variables in Strings with Embedded Spaces
- Information request
- SCTP Generic header format
- Drawbacks with restore
- System tools used for debugging
- INPUT chain
- FORWARD chain
- 7. AGGREGATION WITH INDEPENDENT WORKS