grep
grep -o 只显示搜索字符
grep -i :忽略大小写
grep -v 不显示搜索内容
grep -q 静态 不返回任何字符,(0 有搜索内容 1-255 没有搜索内容)
[root@bogon ~]# grep -q "UUID" /etc/fstab
[root@bogon ~]# echo $?
0
grep -A n 搜索行后面的n行 (after)
[root@bogon ~]# grep -A 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nolog
in
grep -B n 带搜索前的n行(before)
[root@bogon ~]# grep -A 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@bogon ~]# grep -B 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
grep -C n 前后各n行(context)
[root@bogon ~]# grep -C 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
正则
基本正则表达式元字符:
字符匹配:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
匹配都是数字:[:digit:] 匹配都是小写字母:[:lower:] 匹配都是大写字母:[:upper:]
匹配包含数字:[:alnum:] 匹配标点符号[:punct:] 匹配空格 [:space:]
匹配rt之间有两个字母
匹配次数:用于要制定其出现的次数的字符的后面,用于限制七前面字符出现的次数:
*:匹配其前面的字符任意次:
.*:匹配任意字符
\?: 匹配其前面的字符0次或一次;即其前面的字符是可有可无的(必须带引号)
\+:匹配前面的字符1次或多次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符m到n次
位置锚定:
^:行首锚定:用于模式的最左侧;
$:行尾锚定:用于模式的最右侧;
^PATTERN$:用于PATTERN来匹配整行
^$:空白行
^[[:space:]]*$:空行或包含空白字符的行
单词:非特殊字符组成的连续字符(字符串)都称是为单词;
\<或\b:词首锚定,用于单词模式的左侧;
\>或\b:词尾锚定,用于单词模式的右侧;
1.grep -v "/bin/bash$" /etc/passwd
2. grep "\<[0,9]\{2,3\}\>" /etc/passwd
3.grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg
4.netstat -tan | grep "LISTEN[[:space:]]*$"
分组及引用
():将一个或多字符捆绑在一起,当做一个整体进行处理;
例如:(xy)*ab
Note:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录与内部的变量中,这些变量为:
\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配的字符
\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配的字符
…
例如:搜索前后都是love 或这前后都是like
后向引用:引用前面的分组括号中的模式所匹配的字符;