Linux 命令之 grep

1:将/etc/passwd中有root字符的行显示出来

1 [root@bogon zkero]# grep -n 'root' /etc/passwd
2 1:root:x:0:0:root:/root:/bin/bash
3 11:operator:x:11:0:operator:/root:/sbin/nologin

2:指定文件(test1)中读取hello 无论大小写的行

1 [root@bogon zkero]# grep -in 'hello' test1 
2 1:hello
3 3:HELLO

说明:grep 中‘hello’中的'hello'大小写也是忽略的

3:定位符的使用^

/etc/passwd 中只显示首次出现root的行

1 [root@bogon zkero]# grep -n 'root' /etc/passwd
2 1:root:x:0:0:root:/root:/bin/bash
3 11:operator:x:11:0:operator:/root:/sbin/nologin
4 [root@bogon zkero]# grep -n '^root' /etc/passwd
5 1:root:x:0:0:root:/root:/bin/bash

^在[ ]之内是反向选择,在[ ]之外是定位符

4:显示行尾字符所在行

1 [root@bogon zkero]# grep -n 'bash$' /etc/passwd 
2 1:root:x:0:0:root:/root:/bin/bash
3 34:zkero:x:500:500:zkero:/home/zkero:/bin/bash

5:定位显示空白行

 1 [root@bogon zkero]# cat -n test1 
 2      1    hello
 3      2    world
 4      3    HELLO
 5      4    
 6      5    WORLD
 7      6    
 8      7    i an supker
 9      8    i like computer!
10      9    
11 [root@bogon zkero]# grep -n '^$' test1 
12 4:
13 6:
14 9:

6:一般脚本文件都有空白行和#注释开头的行,如果特殊需要,需要省略这些行:

 1 [root@bogon zkero]# cat /etc/sysctl.conf 
 2 # Kernel sysctl configuration file for Red Hat Linux
 3 #
 4 # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
 5 # sysctl.conf(5) for more details.
 6 
 7 # Controls IP packet forwarding
 8 net.ipv4.ip_forward = 0
 9 
10 # Controls source route verification
11 net.ipv4.conf.default.rp_filter = 1
12 
13 # Do not accept source routing
14 net.ipv4.conf.default.accept_source_route = 0
15 
16 # Controls the System Request debugging functionality of the kernel
17 kernel.sysrq = 0
18 
19 # Controls whether core dumps will append the PID to the core filename.
20 # Useful for debugging multi-threaded applications.
21 kernel.core_uses_pid = 1
22 
23 # Controls the use of TCP syncookies
24 net.ipv4.tcp_syncookies = 1
25 
26 # Disable netfilter on bridges.
27 net.bridge.bridge-nf-call-ip6tables = 0
28 net.bridge.bridge-nf-call-iptables = 0
29 net.bridge.bridge-nf-call-arptables = 0
30 
31 # Controls the default maxmimum size of a mesage queue
32 kernel.msgmnb = 65536
33 
34 # Controls the maximum size of a message, in bytes
35 kernel.msgmax = 65536
36 
37 # Controls the maximum shared segment size, in bytes
38 kernel.shmmax = 68719476736
39 
40 # Controls the maximum number of shared memory segments, in pages
41 kernel.shmall = 4294967296
42 [root@bogon zkero]# grep -v '^$' /etc/sysc
43 sysconfig/   sysctl.conf  
44 [root@bogon zkero]# grep -v '^$' /etc/sysctl.conf | grep -v '^#'
45 net.ipv4.ip_forward = 0
46 net.ipv4.conf.default.rp_filter = 1
47 net.ipv4.conf.default.accept_source_route = 0
48 kernel.sysrq = 0
49 kernel.core_uses_pid = 1
50 net.ipv4.tcp_syncookies = 1
51 net.bridge.bridge-nf-call-ip6tables = 0
52 net.bridge.bridge-nf-call-iptables = 0
53 net.bridge.bridge-nf-call-arptables = 0
54 kernel.msgmnb = 65536
55 kernel.msgmax = 65536
56 kernel.shmmax = 68719476736
57 kernel.shmall = 4294967296

7: 限定连续RE字符范围{ } 

找两个连续的o字符

 1 [zkero@bogon ~]$ cat test2
 2 mygod!
 3 good morning!
 4 eat food!
 5 gooooodbye!
 6 
 7 [zkero@bogon ~]$ grep -n 'o{2}' test2 
 8 2:good morning!
 9 3:eat food!
10 4:gooooodbye!

其中:{ } 为特殊符号,需要用转义

查找连续字符后面接特定字符:比如:3到5个连续字符o后面接d

1 [zkero@bogon ~]$ grep -n 'o{3,5}d' test2 
2 4:gooooodbye!

查找g开头,d结尾,指定o数目的例子:

1 [zkero@bogon ~]$ grep -n 'go{2,5}d' test2 
2 2:good morning!
3 4:gooooodbye!
4 [zkero@bogon ~]$ grep -n 'go{2,4}d' test2 
5 2:good morning!

可知:第4行有5个o,指定2到4个范围,并没有出现第4行内容

原文地址:https://www.cnblogs.com/zker/p/4592779.html