Home> php教程> PHP开发> body text

Linux basic command text filtering grep

高洛峰
Release: 2016-11-08 14:49:38
Original
1134 people have browsed it

It is often necessary to filter text or output content in Linux. The most commonly used filtering command is grep

grep [OPTIONS] PATTERN [FILE...]
Copy after login

grep retrieves each input line line by line. If the input line contains the pattern PATTERN, this line is output. The PATTERN here is a regular expression (refer to the previous article, this article will use grep as an example).

Output the line containing root in the file /etc/passwd:

[root@centos7 temp]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
Copy after login

Or get it from the standard input:

[root@centos7 temp]# cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
Copy after login
Copy after login

What needs to be noted is that when grep’s input comes from both a file and standard input, grep will ignore the standard input The content will not be processed unless the symbol - is used to represent the standard input:

[root@centos7 temp]# cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
Copy after login
Copy after login

At this time, grep will indicate which results come from the file and which come from the standard input.

Output the lines starting with root in the file /etc/passwd and the file /etc/group:

[root@centos7 temp]# cat /etc/passwd | grep root /etc/passwd - /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin (标准输入):root:x:0:0:root:/root:/bin/bash (标准输入):operator:x:11:0:operator:/root:/sbin/nologin
Copy after login

At this time, grep will indicate which results come from the file and which come from the standard input.

Output the lines starting with root in the file /etc/passwd and the file /etc/group:

[root@centos7 temp]# grep "^root" /etc/passwd /etc/group /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/group:root:x:0:
Copy after login

Output the lines ending with /bin/bash in the file /etc/passwd:

[root@centos7 temp]# grep "/bin/bash$" /etc/passwd root:x:0:0:root:/root:/bin/bash learner:x:1000:1000::/home/learner:/bin/bash
Copy after login

Note the PATTERN in the above two examples Quoted in double quotes to prevent parsing by the shell.

Output the lines in the file /etc/passwd that do not start with any of the letters in a-s:

[root@centos7 temp]# grep "^[^a-s]" /etc/passwd tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin
Copy after login

You need to understand the different meanings between the two ^ here. The first ^ represents the beginning of the line, and the second one is inside [] The first character ^ means negation.

Output the lines in the file /etc/passwd where the character 0 appears three times or more in a row (note the escape character ''):

[root@centos7 temp]# grep "0\{3,\}" /etc/passwd learner:x:1000:1000::/home/learner:/bin/bash
Copy after login

For example, output the lines starting with the character r or l in the file /etc/passwd:

[root@centos7 temp]# grep "^[r,l]" /etc/passwd root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin learner:x:1000:1000::/home/learner:/bin/bash
Copy after login

Option -i causes grep to ignore case when matching patterns:

[root@centos7 temp]# grep -i abcd file ABCD function abcd() { [root@centos7 temp]#
Copy after login

Option -o means to output only matching characters, not the entire line:

[root@centos7 temp]# grep -oi abcd file ABCD abcd [root@centos7 temp]#
Copy after login

Option -c counts the number of matching lines:

[root@centos7 temp]# grep -oic abcd file 2 [root@centos7 temp]#
Copy after login

Option -v Indicates inverse matching, such as outputting lines in /etc/passwd that do not end with /sbin/nologin:

[root@centos7 temp]# grep -v "/sbin/nologin$" /etc/passwd root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt learner:x:1000:1000::/home/learner:/bin/bash
Copy after login

Option -f FILE means using each line in the file FILE as a pattern match:

[root@centos7 temp]# cat test abcd ABCD [root@centos7 temp]# grep -f test file ABCD function abcd() { [root@centos7 temp]#
Copy after login

Option -x means the entire line Match:

[root@centos7 temp]# grep -xf test file ABCD [root@centos7 temp]#
Copy after login

Option-w means to match the entire word:

[root@centos7 temp]# grep here file here there [root@centos7 temp]# grep -w here file here [root@centos7 temp]#
Copy after login

Option-h means not to output the file name when there are multiple files:

[root@centos7 temp]# cat /etc/passwd|grep ^root - /etc/passwd -h root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash
Copy after login

Option-n means to display line numbers:

[root@centos7 temp]# grep -n "^[r,l]" /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 24:learner:x:1000:1000::/home/learner:/bin/bash
Copy after login

Option-A N, -B N , -C N means output matching lines and their 'surrounding lines'

-A N 表示输出匹配行和其之后(after)的N行 -B N 表示输出匹配行和其之前(before)的N行 -C N 表示输出匹配行和其之前之后各N行 [root@centos7 temp]# grep -A 2 ^operator /etc/passwd operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin [root@centos7 temp]# grep -B2 ^operator /etc/passwd halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [root@centos7 temp]# grep -C1 ^operator /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin
Copy after login

option -F treats PATTERN as its literal match (ignoring the special meaning of the characters), which is equivalent to executing the command fgrep:

[root@centos7 temp]# grep -F ^root /etc/passwd [root@centos7 temp]#
Copy after login

The command has no output

option -E can use extended regular expressions, just like executing the egrep command:

[root@centos7 temp]# egrep "^root|^learner" /etc/passwd root:x:0:0:root:/root:/bin/bash learner:x:1000:1000::/home/learner:/bin/bash
Copy after login

Using extended regular expressions means that special meanings of characters can be expressed without escaping, including ?, +, {, |, (and).

The option -P means to use perl's regular expression for matching
For example:

[root@centos7 ~]# echo "helloworld123456"| grep -oP "\d+" 123456 [root@centos7 ~]#
Copy after login

"d" in perl regular expression means a number, and + means matching one to multiple times (same as vim).

Option -a treats binary files as text files:

[root@centos7 ~]# grep -a online /usr/bin/ls %s online help: <%s> [root@centos7 ~]#
Copy after login

Options --exclude=GLOB and --include=GLOB mean to exclude and include files matching GLOB respectively, GLOB means wildcard (see the basic command introduction for find and xargs usage) 3):

[root@centos7 temp]# find . -type f | xargs grep --exclude=*.txt --include=test* bash ./test.sh:#!/bin/bash [root@centos7 temp]#
Copy after login

grep’s powerful filtering capabilities come from the combination of various options and regular expressions

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!