正则、grep、egrep

正则介绍

  • 正则表达式概念:正则表达式是对字符串操做的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
  • 正则表达式简介:正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操做的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

grep

grep 是一个强大的搜索过滤工具,参数有不少,可使用不一样的参数实现不一样的功能。正则表达式

  • grep -[cinvrABC] 'word' file1 不加参数,搜索出file1文件中含有‘word’字符的行
  • c 统计过滤出的行数
  • i 过滤内容时不区分大小写
  • n 过滤出来的内容显示其行号
  • v 过滤出全部不包含关键词的行
  • r 过滤出目录及子目录(子子目录)下的文件中含有关键词的行
  • A 后面跟数字n ,除了把含有关键词的行列出来还把该行的下面n行也列出来
  • B 后面跟数字n,除了把含有关键词的行列出来还把该行的上面n行也列出来
  • C 后面跟数字n,除了把含有关键词的行列出来还把该行的上面下面的n行也列出来
  • R 搜索子目录
  • m 跟数字n,只列出n条含有关键词的行

grep -c 'word' file 统计行数bash

[root@localhost tmp]# grep -c 'nologin' 1.txt 
15

grep -n 'word' file 列出过滤内容并显示行号ssh

[root@localhost tmp]# grep -n 'nologin' 1.txt 
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
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:dbus:x:81:81:System message bus:/:/sbin/nologin
15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

grep -in 'word' file列出打印内容,并不区分大小写工具

[root@localhost tmp]# grep -in 'nologin' 1.txt 
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
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:dbus:x:81:81:System message bus:/:/sbin/nologin
15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

grep -v 'word' file 过滤出全部不包含关键词的行post

[root@localhost tmp]# grep -v 'nologin' 1.txt 
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/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
lic:x:1000:1000::/home/lic:/bin/bash

grep -r 'word' dir 过滤出目录及子目录(子子目录)下的文件中含有关键词的行code

[root@localhost /]# grep -inr 'nologin' /tmp
/tmp/2.txt:2:bin:x:1:1:bin:/bin:/sbin/nologin
/tmp/2.txt:3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
/tmp/2.txt:4:adm:x:3:4:adm:/var/adm:/sbin/nologin
/tmp/1.txt:2:bin:x:1:1:bin:/bin:/sbin/nologin
/tmp/1.txt:3:daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
/tmp/1.txt:4:adm:x:3:4:adm:/var/adm:/sbin/nologin
/tmp/1.txt:5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
/tmp/1.txt:9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
/tmp/1.txt:10:operator:x:11:0:operator:/root:/sbin/nologin
/tmp/1.txt:11:games:x:12:100:games:/usr/games:/sbin/nologin
/tmp/1.txt:12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
/tmp/1.txt:13:nobody:x:99:99:Nobody:/:/sbin/nologin
/tmp/1.txt:14:dbus:x:81:81:System message bus:/:/sbin/nologin
/tmp/1.txt:15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
/tmp/1.txt:16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
/tmp/1.txt:17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
/tmp/1.txt:18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
/tmp/1.txt:19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

grep -A3 'word' filename 除了把含有关键词的行列出来还把该行的下面3行也列出来ip

[root@localhost /]# grep -nA3 'nologin' /tmp/1.txt 
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
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:dbus:x:81:81:System message bus:/:/sbin/nologin
15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
20-lic:x:1000:1000::/home/lic:/bin/bash

grep -B3 'word' filename 除了把含有关键词的行列出来还把该行的下面3行也列出来ci

[root@localhost tmp]# grep -nB3 'nologin' 1.txt 
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
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:dbus:x:81:81:System message bus:/:/sbin/nologin
15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

grep -C2 'word' filename 除了把含有关键词的行列出来还把该行的上面下面2行也列出来字符串

[root@localhost tmp]# grep -nC2 'nologin' 1.txt 
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
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:dbus:x:81:81:System message bus:/:/sbin/nologin
15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
20-lic:x:1000:1000::/home/lic:/bin/bash

grep -m2 'word' filename列出2条含有关键词的行it

[root@localhost tmp]# grep -nm2 'nologin' 1.txt 
2:bin:x:1:1:bin:/bin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin

  • grep '[0-9]' filename 表示过滤出该文件下全部带数字的行

  • grep -v '[0-9]' filename表示过滤出该文件下全部不带数字的行

  • ^word 表示已word开头的行

[root@localhost tmp]# grep -n '^#'  1.txt 
3:#daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
4:#adm:x:3:4:adm:/var/adm:/sbin/nologin
  • grep '^[^0-9]' filename ^在[]内表示以非数字开始的行

  • grep -v '^[^0-9]' filename 表示以数字开始的行

  • grep 'r.o' filename .表示一个任意的字符

  • grep 'r*o' filename 星号表示任意个数的任意字符

  • grep 'o{2} filename 表示o出现2次也就是oo 的行=grep -E 'o{2}' filename =egrep 'o{2}' filename

  • egrep 'o+o' filename =grep 'o+o' filename +表示出现一次以上左边字符的行

  • egrep 'o?t' filename 中的?表示左边字符出现过n次的行,n为任意值

  • egrep 'root|nologin' filename 中的|表示匹配root或者nolongin的行

  • egrep '(oo){2}' filename 表示oo出现两次=oooo 的行

相关文章
相关标签/搜索