20151130正则第一部分(grep)

回归:
shell基础部分
[ root@niejicai-linux ~]# b='$a'                                     ‘单号的区别
[ root@niejicai-linux ~]# echo $b
$a
[ root@niejicai-linux ~]# a=2                     
[ root@niejicai-linux ~]# b="$a"123                              ”双引号的区别
[ root@niejicai-linux ~]# echo $b
2123
[ root@niejicai-linux ~]# c=`echo $a`                             `反引号区别,直接赋值
[ root@niejicai-linux ~]# echo $c
2
[ root@niejicai-linux ~]# ls  /etc/profile    /etc/bashrc    ~/.bash_profile     ~/.bashrc                              系统的              系统的                    个人的
个人的


正则第一部分:
一、grep/egrep 
1. 语法+选项
语法: grep  [-cinvABC]  'word'  filename 
-c :打印符合要求的行数
-n :在输出符合要求的行的同时连同行号一起输出 
-v :打印不符合要求的行 
-A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 
-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行  
-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行 
-r : 会把目录下面所有的文件全部遍历

测试如下:
[ root@niejicai-linux ~]# cp /etc/passwd 1.txt  
打印符合要求的行数
[ root@niejicai-linux ~]#  grep 'home' 1.txt
niejicai:x:500:500:niejicai:/home/niejicai:/bin/bash
xiaonie:x:501:501::/home/xiaonie:/bin/bash
user1:x:502:503::/home/user1:/bin/bash
user2:x:5505:5505::/home/user2:/bin/bash
user10:x:5506:5507::/home/user10:/bin/bash
user20:x:505:505::/home/user20:/bin/bash
user41:x:5562:500::/home/user41:/bin/bash
user42:x:5561:500::/home/user42:/bin/bash
user4:x:509:500:user4,ddddddddddd,aaaaaaaaaaa,1111111111111home/user444:/bin/bash
user0:x:5563:5563::/home/user0:/bin/bash
[ root@niejicai-linux ~]#  grep -c 'root' 1.txt                  统计出现的行数
2                                                                                         表示root的有了2行

[ root@niejicai-linux ~]#  grep -n --color 'root' 1.txt      输出符合行数的同时,输出行号来。
1: root:x:0:0: root: /root:/bin/bash                                       第 1行
11:operator:x:11:0:operator: /root:/sbin/nologin             第11行

[ root@niejicai-linux ~]# grep -n --color 'root' 1.txt
1: root:x:0:0: root:/ root:/bin/bash
11:operator:x:11:0:operator:/ root:/sbin/nologin
[ root@niejicai-linux ~]#  grep -o 'root' 1.txt  | wc -l       统计出次数
4
[ root@niejicai-linux ~]# alias grep='grep --color'         做一个别名,我这里想要它显示颜色。
[ root@niejicai-linux ~]#  grep -v 'root' 1.txt                    取反      
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
pulse:x:498:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:497:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
niejicai:x:500:500:niejicai:/home/niejicai:/bin/bash
hacluster:x:496:493:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin
xiaonie:x:501:501::/home/xiaonie:/bin/bash

[ root@niejicai-linux ~]#  grep -A2 -n 'root' 1.txt     
                                                       -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 
                                                       -n :在输出符合要求的行的同时连同行号一起输出 
1: root:x:0:0:root: /root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
11:operator:x:11:0:operator: /root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

[ root@niejicai-linux ~]#  grep -B2 -n 'root' 1.txt
                                                         -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行
1: root:x:0:0: root:/root:/bin/bash
--
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator:/ root:/sbin/nologin

[ root@niejicai-linux ~]#  grep -C2  -n 'root' 1.txt
                                                           后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行 
1: root:x:0:0: root:/ root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator: /root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
[ root@niejicai-linux ~]#  grep -r 'root' /etc/     -r : 会把目录下面所有的文件全部遍历



例子介绍
过滤出带有某个关键词的行并输出行号         grep -n 'root' 1.txt 
过滤出不带有某个关键词的行并输出行号       grep -n -v 'root' 1.txt
过滤出所有包含数字的行         grep '[0-9]' 1.txt
过滤出所有不包含数字的行      grep -v '[0-9]' 1.txt
去除所有以'#'开头的行            grep -v '^#' 1.txt
去除所有空行和以'#'开头的行      grep -v '^$' 1.txt|grep -v '^#'
过滤出以英文字母开头的行          grep '^[a-zA-Z]' 1.txt
过滤出以非数字开头的行              grep '^[^0-9]' 1.txt
过滤任意一个或多个字符               
 grep 'r . o' 1.txt        
表示任意一个字符;
 grep ' r* t' 1.txt        * 表示零个或多个前面的字符  ;
 grep 'r.*t' 1.txt      .*表示零个或多个任意字符空行也包含在内 ;


指定过滤字符次数 grep 'o\{2\}' 1.txt

[ root@niejicai-linux ~]#  grep -E 'ro?t' 1.txt                       ?表示一个或者0个前面的字符
vcsa:x:69:69:vi rtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
ab rt:x:173:173::/etc/ab rt:/sbin/nologin
hacluster:x:496:493:hea rtbeat user:/var/lib/hea rtbeat/cores/hacluster:/sbin/nologin
[ root@niejicai-linux ~]#  egrep --color 'ro?t' 1.txt            ?表示一个或者0个前面的字符
vcsa:x:69:69:vi rtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
ab rt:x:173:173::/etc/ab rt:/sbin/nologin
hacluster:x:496:493:hea rtbeat user:/var/lib/hea rtbeat/cores/hacluster:/sbin/nologin

[ root@niejicai-linux ~]#  grep -E 'ro+t' 1.txt                    +表示一个或者多个前面的字符
root:x:0:0: root:/ root:/bin/bash
roooooooooooooooooooot
operator:x:11:0:operator:/root:/sbin/nologin

[ root@niejicai-linux ~]#  grep -n 'n$' 1.txt                          以n结尾的
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
10:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
12:operator:x:11:0:operator:/root:/sbin/nologin
13:games:x:12:100:games:/usr/games:/sbin/nologin
14:gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
15:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
16:nobody:x:99:99:Nobody:/:/sbin/nologin
17:dbus:x:81:81:System message bus:/:/sbin/nologin
18:usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
19:vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
20:rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
21:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
22:pulse:x:498:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
23:haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
24:ntp:x:38:38::/etc/ntp:/sbin/nologin
25:apache:x:48:48:Apache:/var/www:/sbin/nologin
26:saslauth:x:497:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
27:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
28:abrt:x:173:173::/etc/abrt:/sbin/nologin
29:gdm:x:42:42::/var/lib/gdm:/sbin/nologin
30:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
31:tcpdump:x:72:72::/:/sbin/nologin
33:hacluster:x:496:493:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值