1. Match characters
. Match any single character
[ ] Match any character within the specified range
[^] Match any character within the specified range
[:alpha:] Alphabetic characters
[:lower :] Lowercase alphabetic characters
[:upper:] Uppercase alphabetic characters
[:digit:] Numbers
[:alnum:] Alphanumeric characters
[:space:] White space characters (printing is prohibited), such as carriage return characters, line feeds, vertical tabs and form feeds
[:punct:] punctuation characters
[:cntrl:] control characters (printing prohibited)
[:print:] printable characters
when used Generally, two square brackets are used, which will be used in the following examples.
2. Matching times
* Match the previous character any time
.* Match any character of any length (note the greedy mode, such as grep "r.*t" /etc/passwd )
x{m,n } Specifies that the preceding character appears at least m times and at most N times.
x{m,} Specifies that the previous character appears at least m times
x{0,n} Specifies that the previous character appears at most N times
x{m} Exactly matches m times
? Matches the preceding character 0 Or 1 time
Three. Anchor character
1.^ Anchor at the beginning of the line grep "^r..t" /etc/passwd
2.$ Anchor at the end of the line grep "h$" /etc/passwd
3.^$ Anchor blank line grep "^$" /etc/passwd
4.< (b) Anchor word beginning grep " 5.> (b) Anchor word beginning grep "r..t>" /etc/passwd Example (easy to confuse): contains at least one whitespace character grep "[[:space:]]{1,}" /etc /passwd contains at least one non-whitespace character grep "[^[:space:]]{1,}" /etc/passwd does not have a whitespace character grep -v "[^[:space:]]{1, }" /etc/passwd 6.() Group characters grep "(l..e).*1r" Example: grep --color "l([13]):1:.*: 1" /etc/inittab Four. Options -v Invert the result -i Ignore the case of letters -o Only display the matched string (other contents of the line are not displayed) -E Support extended regular expressions -A n Display n lines below the matched line -B n Display n lines above the matched line -C n Display n lines above and below the matched line Exercise: 1. Find relevant information about user1 in the system. (Create user11, myuser1 in advance) (Error-prone) grep "user1" /etc/passwd All lines containing user1 grep " useradd -c "user1's uncle" /etc/passwd -c is a comment grep "^ 2. Find the system that starts with user followed by a number User related information. grep "^user[0-9]{1,}>" /etc/passwd 3. Analyze the characteristics of the following two lines of text in the /etc/inittab file, and write a pattern similar to the two lines that can be accurately found , requires that the numbers in each row must be the same. l1:1:wait:/etc/rc.d/rc 1 l3:3:wait:/etc/rc.d/rc 3 grep "l([13]):1:.*: .* 1" inittab Extension: Match all the above characteristics: grep "l([0-9]):1:.*:.* 1" inittab If it exceeds 10, you need to add a minimum match: grep "l( [0-9]{1,}):1:.*:.* 1" inittab 4. Display the lines starting with case-insensitive s in the /proc/meminfo file grep "^[sS] " /proc/meminfo 5. Display the lines ending with nologin in /etc/passwd grep "nologin$" /etc/passwd 6. Display the lines starting with # in /etc/inittab and followed by one or Lines with multiple whitespace characters, followed by any non-whitespace characters grep "^#[[:space:]]{1,}[^[:space:]]" /etc/inittab 7. Display /etc/inittab contains lines with a number between two colons grep ":[0-9]:" /etc/inittab 8. Display the /boot/grub/grub.conf file with one or more lines with blank characters grep ":[0-9]:" /etc/inittab 9. Displays lines in the /etc/inittab file that start with a number and end with a number that has the same starting number. grep "^([0-9]).*1$" /etc/inittab 10. Display non-blank lines in the /etc/inittab file grep -v "^$" /etc/inittab 11. Get the relevant IP address of the current network interface (excluding 127.0.0.1) ifconfig |grep "inet addr" |grep -v "127.0.0.1"| cut -d: -f2|cut -d" " - f1 ifconfig |grep -A 1 "eth" |grep -o "addr:[0-9.]{1,}"|cut -d: -f2 5. Extended regular expressions are different from regular expressions Where: () is replaced with () {} is replaced with {} + Number of matches, match the character before it one or more times | or Example: appears in the ifconfig result The number is an integer between 1-255 ifconfig|grep --color -E "<([1-9]|[1-9][0-9]|1[1-9][0-9 ]|2[0-5][0-5])>"