grep简单常用用法
正则表达式
\ 转义符,将特殊字符进行转义,忽略其特殊意义 ^ 匹配行首,awk中,^则是匹配字符串的开始 $ 匹配行尾,awk中,$则是匹配字符串的结尾 ^$ 表示空行 . 匹配除换行符\n之外的任意单个字符 [ ] 匹配包含在[字符]之中的任意一个字符 [^ ] 匹配[^字符]之外的任意一个字符 [ - ] 匹配[]中指定范围内的任意一个字符,例:[1-9][a-z] ? 匹配之前的项1次或者0次 + 匹配之前的项1次或者多次 * 匹配之前的项0次或者多次, .* () 匹配表达式,创建一个用于匹配的子串 { n } 匹配之前的项n次,n是可以为0的正整数 {n,} 之前的项至少需要匹配n次 {n,m} 指定之前的项至少匹配n次,最多匹配m次,n<=m | 或者,|两边的任意一项,ab(c|d)匹配abc或abd特定字符: [[:space:]] 空格 [[:digit:]] [0-9] [[:lower:]] [a-z] [[:upper:]] [A-Z] [[:alpha:]] [a-Z]
grep参数说明:
-n:显示行号-v:取反
-E:使用扩展正则==egrep
-i:忽略大小写
-o:只输出匹配到的内容,匹配行中的其他内容不输出
-w:按照单词过滤
-r:遍历目录查找
-A n:输出匹配内容的后n行(包括匹配行)
-B n:输出匹配内容的前n行(包括匹配行)
-C n:输出匹配内容的前后n行(包括匹配行)
<:词首锚定,同\b
>:词尾锚定,同\b
举例:
#过滤以m开头的行[root@m01 ~]# grep ‘^m’ passwd mail❌8:12:mail:/var/spool/mail:/sbin/nologin
#过滤以sync结尾的行
[root@m01 ~]# grep ‘sync$’ passwd sync❌5:0:sync:/sbin:/bin/sync
#过滤空行,不显示空行
[root@m01 ~]# grep -v ’^$’ passwd
#显示匹配内容的前2行
[root@m01 ~]# grep -B2 ‘^m’ passwd shutdown❌6:0:shutdown:/sbin:/sbin/shutdown halt❌7:0:halt:/sbin:/sbin/halt mail❌8:12:mail:/var/spool/mail:/sbin/nologin
#显示匹配内容的后2行
[root@m01 ~]# grep -A2 ‘^m’ passwd mail❌8:12:mail:/var/spool/mail:/sbin/nologin operator❌11:0:operator:/root:/sbin/nologin games❌12💯games:/usr/games:/sbin/nologin
#显示匹配内容的前后2行
[root@m01 ~]# grep -C2 ‘^m’ passwd shutdown❌6:0:shutdown:/sbin:/sbin/shutdown halt❌7:0:halt:/sbin:/sbin/halt mail❌8:12:mail:/var/spool/mail:/sbin/nologin operator❌11:0:operator:/root:/sbin/nologin games❌12💯games:/usr/games:/sbin/nologin
#过滤nologin,只显示匹配的内容
[root@m01 ~]# grep -o 'nologin' passwd nologin nologin ...
#过滤出sever的单词[root@m01 ~]# grep -w ‘server’ /etc/ssh/sshd_config
This is the sshd server system-wide configuration file. See
Subsystem sftp /usr/libexec/openssh/sftp-server
ForceCommand cvs server
#遍历/root目录中的文件,包含hello的内容