一.grep [Globally search a Regular Expression and Print]
grep
grep -E = egrep
1.grep 格式:
grep 匹配条件 处理文件
grep root passwd ##过滤root关键字
grep -i root passwd ##忽略大小写
grep -E "\<root" passwd ##root字符之前不能有字符
grep -E "root\>" passwd ##root字符之后不能有字符
grep -数字 ##显示过滤行以及上面几行和下面几行
grep -n ##显示匹配的行所在行号
grep -A ##显示过滤行以及下面几行
grep -B ##显示过滤行以及上面几行
grep -v ##反向过滤
grep root passwd ##过滤root关键字
grep -i root passwd ##过滤root关键字,并忽略大小写
vim passwd
grep -i root passwd
grep -E "\<root" passwd ##root字符之前不能有字符
grep -E "root\>" passwd ##root字符之后不能有字符
grep -E "\<root\>" passwd ##root字符之前和之后都不能有字符
grep -n chroot passwd ##显示匹配的行所在行号
grep -2 chroot passwd ##显示过滤行以及上面2行和下面2行
grep -A2 chroot passwd ##显示过滤行以及下面2行
grep -B2 chroot passwd ##显示过滤行以及上面2行
grep root passwd -v ##反向过滤,除了含有root行之外的所有行都输出
2. grep字符数量匹配规则:
^westos ##以westos开头
westos$ ##以westos结尾
w....s ##w开头s结尾中间4个任意字符
.....s ##s结尾前面5个任意字符
* ##字符出现任意
? ##0到1次
+ ##1次到任意次
{n} ##n次
{m,n} ##m到n次
{0,n} ##0-n次
{,n} ##0-n次
{m,} ##最少m次
(lee){2} ##lee字符串出现2次
grep w.s westos
grep w..s westos
grep w...s westos ##w开头s结尾中间3个任意字符
grep w.*s westos ##w开头s结尾中间字符出现任意
grep -E 'w.?s' westos ##0到1个字符
grep -E 'w.+s' westos ##1次到任意个字符
grep -E 'w.{1,2}s' westos ##1到2个字符
grep -E 'w.{2,}s' westos ##最少2个字符
grep -E 'we.{2,}s' westos ##we开头s结尾中间至少2个任意字符
grep -E 'wea.{2,}s' westos ##wea开头s结尾中间至少出现2次
grep -E 'we.{,2}s' westos ##we开头s结尾中间0-2个任意字符
grep -E 'w.{,2}s' westos ##w开头s结尾中间0-2个任意字符
grep -E 'w(ea){2,}s' westos ##w开头s结尾中间ea字符串出现至少2次
练习脚本:
请显示系统中能被su命令切换的用户名称
vim show_user.sh
#!/bin/bash
cat /etc/passwd | grep -E "/bin/bash|/bin/sh" | cut -d : -f 1
sh show_user.sh