grep工具

正则表达式:

正则就是一串有规律的字符串

掌握好正则对于编写shell脚本有很大帮助

各种编程语言中都有正则,原理是一样的

grep工具

格式:

grep [-cinvABC] 'word' filename 

 -c 行数

 -i 不区分大小写

 -n 显示行号

 -v 取反

 -r 遍历所有子目录

 -A 后面跟数字,过滤出符合要求的行以及下面n行

 -B 同上,过滤出符合要求的行以及上面n行

 -C 同上,同时过滤出符合要求的行以及上下各n行

1、[root@test ~]# cat /etc/passwd| grep 'test'

test:x:507:111::/home/test:/bin/bash

test1:x:509:111::/home/test1:/bin/bash

gztest:x:555:111::/home/zg/:/bin/bash

-c:统计匹配的行数

[root@test ~]# grep -c 'test' /etc/passwd

3


2、

[root@test ~]# grep -in 'TesT' /etc/passwd

33:test:x:507:111::/home/test:/bin/bash

35:test1:x:509:111::/home/test1:/bin/bash

36:gztest:x:555:111::/home/zg/:/bin/bash


3、

[root@test ~]# ps -ef | grep rsync

root     11137     1  0 14:55 ?        00:00:00 rsync --daemon

root     11904 10038  2 16:10 pts/1    00:00:00 grep rsync

[root@test ~]# ps -ef | grep rsync| grep -v grep

root     11137     1  0 14:55 ?        00:00:00 rsync --daemon


4、

[root@test ~]# grep -r 'mysql' *

1.txt:mysqlroot=mysql -uroot -p

5、

[root@test ~]# grep -n -C 5 'test' /etc/passwd  

28-apache:x:48:48:Apache:/var/www:/bin/bash

29-tcpdump:x:72:72::/:/sbin/nologin

30-dockerroot:x:498:498:Docker User:/var/lib/docker:/sbin/nologin

31-www:x:506:506::/home/www:/bin/bash

32-jenkins:x:497:497:Jenkins Automation Server:/var/lib/jenkins:/bin/false

33:test:x:507:111::/home/test:/bin/bash

34-gz1:x:508:508::/home/gz1:/bin/bash

35:test1:x:509:111::/home/test1:/bin/bash

36:gztest:x:555:111::/home/zg/:/bin/bash

37-fc:x:556:556::/home/fc:/bin/bash

38-rsync:x:557:557::/home/rsync:/sbin/nologin


通配符

字符和字符范围匹配

. 匹配任意"单个字符" (bash 中,使用?号)

* 匹配紧挨在其前面的字符任意次

.*  表示零个或多个任意字符,空行也包含在内。

'o\{2\}'' 出现2次以上的o打印;'o\{1,4\}':出现一次到4次的打印

[root@test ~]# ls 2*.txt

23.txt  2.txt

.*  组合-----匹配任意长度的任意字符

排除空格及#开头的行

[root@test ~]# grep -E -v '^$|^#' /etc/fstab 

/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1

UUID=22af8038-24b3-4dd4-b91b-10f1727c1083 /boot                   ext4    defaults        1 2

/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

UUID=4381537c-d536-40d6-9522-9343c5998a29 /data ext4   defaults         0 0


例子:

[root@centos7-2 tmp]# cat test.txt 

123

abc

456


abc2323

#laksdjf

Alllllllll

问题1、查找出不是以大小写字母开头的行

#[^字符] 表示除[ ]内的字符之外的字符,^[]以什么开头;[15]:表示1和5,而不是15

grep ^[^A-Za-z] test.txt



以数字开头:

[root@test ~]# grep ^[0-9] 1.txt 

1 asd

2sd

3

4

5


以a-z开头:

[root@test ~]# grep -E ^[a-z] 1.txt 

mysqlroot=mysql -uroot -p

asd4444

sd

fsdf

[root@test ~]# grep -E ^[^a-z] 1.txt 

1 asd

2sd

3

4

5


egrep=grep -E

1、筛选出出现一个或者多个o

egrep 'o+' /etc/passwd


2、egrep 'oo+' /etc/passwd

3、(oo)+表示出现一个或者多个oo的

[root@centos7-2 tmp]# egrep '(oo)+' passwd 

root:x:0:0:root:/root:/bin/bash

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

roooooooooot

rooodt












本文转自方向对了,就不怕路远了!51CTO博客,原文链接:http://blog.51cto.com/jacksoner/1979352 ,如需转载请自行联系原作者




上一篇:nmon工具


下一篇:Java类_对象_变量