六周第一次课
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了六周第一次课相关的知识,希望对你有一定的参考价值。
9.1 正则介绍_grep上grep [-cinvABC] ‘word‘ filename
-c 行数
-i 不区分大小写
-n 显示行号
-v 取反
-r 遍历所有子目录
-A 后面跟数字,过滤出符合要求的行以及下面n行
-B 同上,过滤出符合要求的行以及上面n行
-C 同上,同时过滤出符合要求的行以及上下各n行
9.2 grep中
grep -n ‘root’ /root/passwd #过滤包含root的行并显示行号
grep -nv ‘nologin’ /root/passwd #过滤不包含nologin的行并显示行号
grep ‘[0-9]’ /root/inittab #查找包含数字的行
[[email protected] ~]# grep ‘[0-9]‘ /root/inittab
#multi-user.target: analogous to runlevel 3
#graphical.target: analogous to runlevel 5
grep -v ‘[0-9]’ /root/inittab #过滤不包含数字的行
[[email protected] ~]# grep -v ‘[0-9]‘ /root/inittab
#inittab is no longer used when using systemd.
#
#ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
grep -v ‘^#’ /root/inittab #过滤不包含#的行,^#不是#开头的行
[[email protected] ~]# grep -v ‘^#‘ /root/inittab
Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
iewr#
35466
grep -v ‘^#’ /root/inittab|grep -v ‘^‘ #先过滤出不是#开头的行,再在中间过滤出不是卡头的行(第二个grep中不能用特殊符号 ^$ 表示空行,以空开头 以空结尾 就是空行)
[[email protected] ~]# grep -v ‘^#‘ /root/inittab | grep -v ‘^3‘
Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
$# multi-user.target: analogous to runlevel 3
iewr#
$12312
[[email protected] ~]# grep -v ‘^#‘ /root/inittab | grep -v ‘^i‘
Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
$# multi-user.target: analogous to runlevel 3
35466
$12312
grep ‘^[^a-zA-Z]’ /root/passwd #查出不含字母的含
[[email protected] ~]# grep ‘^[^a-zA-Z]’ /root/passwd
234234235
&&
grep ‘m.s’ /root/passwd #“.”表示任意一个字符,查找m开头+中间任意一个字符+s结尾
[[email protected] ~]# grep ‘m.s‘ /root/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
mysql:x:1017:1017::/home/mysql:/sbin/mologin
grep ‘oo’ /root/passwd # “”表示0个或多个前面这个字符
grep ‘oo’ /root/passwd #左边的这个字符重复0到n次,一次是‘oo’,两次是‘ooo’
这里写图片描述
grep ‘.’ /root/passwd #匹配所有字符串
grep ‘o{2}’ /root/passwd #匹配o出现2次 等于 grep -E ‘o{2}’ /root/passwd
[[email protected] ~]# grep ‘o\{2\}‘ /root/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
roooot:#45345
toooos:2423
[[email protected] ~]# grep ‘o\{3\}‘ /root/passwd
roooot:#45345
toooos:2423
这里写图片描述
egrep可以不脱意{},grep -E也可以达到egrep效果
egrep ‘o{2}’ /root/passwd #效果同grep ‘o{2}’ /root/passwd
egrep ‘o+t’ /root/passwd # +这个符号前面的重复一次或者n次,*号是0次或者多次
这里写图片描述
egrep ‘oo?’ /root/passwd #?前面这个字符重复次数为0或者1
egrep ‘root|nologin’ /root/passwd #包含root或者nologin的行
egrep ‘(oo){2}’ /root/passwd #连续两个00在一起的行
[[email protected] ~]# egrep ‘(oo){2}‘ /root/passwd
roooot:#45345
toooos:2423
9.3 grep下
grep -v ‘^#‘ /etc/inittab 不显示#开头的行也就是不显示注释行
grep -Ev ‘^$|^[#;]‘ inittab 过滤注释和空行
grep -v ‘^#‘ /etc/inittab|grep -v ‘^$‘ 效果同上
grep ‘^[^a-zA-Z]‘ test.txt 显示非字母开头的行内容
grep -n ‘^[0-9]‘ inittab 显示数字开头的行内容和行号
grep -n ‘^[^0-9]‘ inittab 显示非数字开头的行内容和行号
grep ‘r.o‘ test.txt 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 .
grep ‘oo‘ test.txt 匹配前面的子表达式零次或多次。要匹配 字符,请使用 *。
grep ‘.‘ test.txt 匹配任意字符
grep ‘o{2}‘ /etc/passwd 匹配2次,{}表示范围
egrep ‘o{2}‘ /etc/passwd 同上
egrep ‘o+‘ /etc/passwd 匹配+前的字符一次或者多个
egrep ‘oo?‘ /etc/passwd 匹配一个或者0个
egrep ‘root|nologin‘ /etc/passwd |表示或者
egrep ‘(oo){2}‘ /etc/passwd ()表示一个整体
扩展
把一个目录下,过滤所有.php文档中含有eval的行
grep -r --include="*.php" ‘eval‘ /data/
以上是关于六周第一次课的主要内容,如果未能解决你的问题,请参考以下文章