Linux comes with the GNU grep command tool, which supports extended regular expression extended regular expressions, and GNU grep is the default for all Linux systems. The Grep command is used to search for any information that is stored on your server or workstation.
Regular expressions
A regular expression is a pattern that matches the input of each row, and the pattern refers to a sequence of characters. Here's an example:
The code is as follows:
^w1
W1|w2
[^ ]
grep Regular Expression Example
Search for ' Vivek ' in the/ETC/PASSSWD directory
The code is as follows:
grep vivek/etc/passwd
Output Example:
The code is as follows:
Vivek:x:1000:1000:vivek gite,,,:/home/vivek:/bin/bash
Vivekgite:x:1001:1001::/home/vivekgite:/bin/sh
Gitevivek:x:1002:1002::/home/gitevivek:/bin/sh
Search for arbitrary Vivek (that is, case-insensitive search)
The code is as follows:
Grep-i-W VIVEK/ETC/PASSWD
Search Vivek or Raj with arbitrary capitalization
The code is as follows:
Grep-e-i-w ' Vivek|raj '/etc/passwd
The last example above shows the pattern of an extended regular expression.
Anchor Point
You can use the ^ and $ symbols separately to match the start or end of the input line. The following example search shows the input lines starting with Vivek only:
The code is as follows:
grep ^vivek/etc/passwd
Output Example:
The code is as follows:
Vivek:x:1000:1000:vivek gite,,,:/home/vivek:/bin/bash
Vivekgite:x:1001:1001::/home/vivekgite:/bin/sh
You can only search out the lines starting with the word Vivek, that is, not showing vivekgit, VIVEKG, etc. (LCTT: The word is followed by a space, a symbol, and other English word separators.) )
The code is as follows:
Grep-w ^vivek/etc/passwd
Find the line that ends with Word word:
The code is as follows:
grep ' foo$ ' filename
Matches only the rows that contain foo:
The code is as follows:
grep ' ^foo$ ' filename
You can search for blank lines as shown in the following example:
The code is as follows:
grep ' ^$ ' filename
Character class
Match Vivek or Vivek:
The code is as follows:
grep ' [vv]ivek ' filename
Or
The code is as follows:
grep ' [VV][II][VV][EE][KK] ' filename
You can also match numbers (that is, matching vivek1 or VIVEK2, and so on):
The code is as follows:
Grep-w ' [vv]ivek[0-9] ' filename
Can match two numeric characters (i.e. foo11, foo12, etc.):
The code is as follows:
grep ' foo[0-9][0-9] ' filename
It is not limited to numbers, it can also match at least one letter:
The code is as follows:
grep ' [a-za-z] ' filename
Display all lines that contain "w" or "N" characters:
The code is as follows:
grep [WN] File name
The expression enclosed in parentheses, the name of the character class that is wrapped between "[:" and ":]", which represents a list of all characters belonging to this class. The standard character class names are as follows:
[: Alnum:]-alphanumeric characters
[: Alpha:]-alphabetic characters
[: blank:]-null character: Empty Gell and Tab
[:d igit:]-Number: ' 0 1 2 3 4 5 6 7 8 9 '
[: Lower:]-lowercase letters: ' A b c d e F g h i j k l m n o p q R S t u v w x y z '
[: Space:]-whitespace characters: tabs, line breaks, vertical tabs, page breaks, carriage returns, and space keys
[: Upper:]-Capital letter: ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z '
In this example, the matching of all uppercase letters is shown:
The code is as follows:
grep ' [: Upper:] ' filename
Wildcard characters
You can use "." to match a single character. The example matches a 3-character word that begins with "B" at the end of "T":
The code is as follows:
grep '
Over here
< match the empty string before the word
> match the empty string after the word
Print out all lines with only two characters:
The code is as follows:
grep ' ^.. $ ' filename
Display lines that begin with a single point and a number:
The code is as follows:
grep ' ^. [0-9] ' filename
Dot character escape
It is incorrect to match the regular formula to the IP address 192.168.1.254: (LCTT can be matched to the IP address, but it may also match to a similar format where the spacer symbol is not a point)
The code is as follows:
grep ' 192.168.1.254 '/etc/hosts
All three-point characters need to be escaped:
The code is as follows:
grep ' 192.168.1.254 '/etc/hosts
The following example can only match the IP address: (LCTT) The regular expression is not accurate due to the range of digits in the IP address.
The code is as follows:
Egrep ' [[:d igit:]]{1,3}. [[:d Igit:]] {1,3}. [[:d Igit:]] {1,3}. [[:d Igit:]] {1,3} ' filename
How do I search for a matching pattern that starts with a "-" symbol?
To search for a matching '--test--' string using the-e option, if the-e option is not used, the grep command attempts to parse '--test--' as its own option argument:
The code is as follows:
Grep-e '--test--' filename
How do I use grep's "or" match?
Use the following syntax:
The code is as follows:
Grep-e ' word1|word2 ' filename
Or
The code is as follows:
Egrep ' word1|word2 ' filename
Or is
The code is as follows:
grep ' word1|word2 ' filename
How do I use Grep's "and" match?
Use the following syntax to display all rows that contain both ' word1 ' and ' Word2 '
The code is as follows:
grep ' word1 ' filename | grep ' Word2 '
How do I use sequence detection?
You can detect the number of occurrences of a character in a sequence by using the following syntax:
The code is as follows:
N
{N,}
{Min,max}
To match the character "V" appears two times:
The code is as follows:
Egrep "V{2}" filename
The following commands can be matched to "col" and "cool":
The code is as follows:
Egrep ' co{1,2}l ' filename
The following command will match all rows with at least three ' C ' characters.
Copy Code
The code is as follows:
Egrep ' c{3,} ' filename
The following example matches the phone number of 91-1234567890 (that is, two digits-10 digits) in this format.
Copy Code
The code is as follows:
grep [[:d igit:]]{2}[-]? [[:d Igit:]] {10} ' filename
How do I highlight the grep command?
Use the following syntax:
Copy Code
The code is as follows:
grep--color Regular Expression file name
What about just showing matching characters instead of matching out rows?
Use the following syntax:
Copy Code
The code is as follows:
Grep-o Regular Expression file name
Regular Expression Qualifier
qualifier |
description |
|
|
|
* |
|
+ |
|
{n} |
|
{n,} |
matches the preceding subexpression N times To many times. |
{n,m} |
|
As long as it is not at the beginning, end, or end of the sequence, the range of the sequence is represented. |
^ |
|
$ |
|
b |
|
b |
|
< |
|
> |
|
grep and Egrep
Egrep equal to GREP-E. It interprets patterns in the pattern of extended regular expressions. The following help pages from grep:
Basic regular expression meta characters?, +, {, |, (and) have lost their original meaning, use a backslash version, +, {, |, (and) instead. The traditional egrep does not support {metacharacters, some egrep implementations are in {substituted, so a portable script should avoid using the {symbol in GREP-E, to match the literal {should use [}].
The GNU GREP-E attempts to support traditional usage, and it assumes that {is not a special character before the invalid interval specification string.
For example, the grep-e ' {1 ' command searches for a string containing {12 characters without reporting a regular expression syntax error.
The POSIX.2 standard allows for an extension of this operation, but should be avoided in portable script files.