grep
rep [option] "pattern" 文件名称
-m 设置显示匹配次数
-c 显示匹配的次数
-n 显示匹配的行
-i 不区分大小写
-o 只显示匹配的内容不显示整行
-v 取反向值
-e 取多个条件 ##### grep -e "^$" -e "^#" 1.txt 显示空行和注释行
-E 扩展正则表达式 不用加\ 转义符 ##### grep -E "(r79){1,}" 1.txt 支持| 符 或的意思 grep -E "haha|heihei" 1.txt
-A n 显示匹配之后的行数 ###### ifconfig ens33 | grep -A 2 "inet6"
-B n 显示匹配之前的行数 ###### ifconfig ens33 | grep -B 2 "inet6"
-C n 显示匹配前后的行数
-R 递归查找 grep -R 'top' /etc/*
pattern 模式:
正则表达式的元字符
1)匹配单个字符的元字符
. 代表任意一个字符,不能为空 ###### grep "r..t" /etc/passwd
中括号里的符号类似于用了\转义符号
[zaq] 匹配单个字符 或者是z或者是a或者是q的 #####grep "[zxa]" 1.txt
'a|b|asd|abc' 匹配单词,a或者b或者asd或者abc ## grep -E 'a|b|c|asd|abc' 123
[a-z] [A-Z] [0-9 [a-zA-Z0-9]
[^RS] 取反 不是RS开头的 #####grep "^[^RS]" 1.txt
[:punct:] 所有符号
[:space:] 空格 #####grep "[*[:space:]*]" 1.txt
2)匹配字符出现的位置
^R R开头的 ######grep "^R.[qwe]" 1.txt
9$ 9结尾的 ######grep "9$" 1.txt
^$ 空行 (不包括空格tab)
列出文件里目录 ### ll /etc/ | grep "^d"
3)匹配字符出现的次数
* 匹配其前一个字符出现任意次(包括0次) ######## grep "ab*" 1.txt
.* 任意字符任意长度
\? 匹配最多1次 可有可无 ######## grep "r8t\?" 1.txt
\+ 匹配最少1次 ######## grep "r79\+" 1.txt
{n} 精确出现n次 ######## grep "r79\{1\}" 1.txt
{3.5}出现3-5次 ######## grep "r79\{3,5\}" 1.txt
{2,} 最少两次 ######## grep "r79\{2,\}" 1.txt
{,5} 最多5次 ######## grep "r79\{,5\}" 1.txt
分组 合成多字母为一个字符 匹配例子######## grep "\(r79\)\{1,\}" 1.txt
[root@rocky ~]# grep -vE '^($|#)' fstab 反选注释行和空行
##########################################################
空行也算字符
[root@wsb tmp]# grep ' ' 123
a b
1 3
asd 123
asdsad 1231
##
[root@wsb tmp]# grep -n ' ' 123
2:a b
3:1 3
4:asd 123
5:asdsad 1231
11: ##
##########################################################
[root@wsb tmp]# grep '[0-9]\+' /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
----------------------------------------------------------
[root@wsb tmp]# grep -E '[0-9]+' /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
##########################################################
[root@wsb tmp]# egrep 'oldb(e|o)y' 123
oldboy
oldbey
-----------------------------------------------------------
[root@wsb tmp]# egrep 'oldb(.|.*)y' 123
oldboy
oldbey
-----------------------------------------------------------
[root@wsb tmp]# egrep 'oldb[a-z]y' 123
oldboy
oldbey