grep:文本过滤器
原文出处:https://www.cnblogs.com/My-IronMan/p/15713535.html
一:grep语法格式:
grep [参数] [匹配规则] [操作对象]
二:参数:
-n :过滤文本时,将过滤出来的内容在文件内的行号显示出来
-A :匹配成功后,将匹配行的后n行显示出来
-B :匹配成功后,将匹配行的前n行显示出来
-C :匹配成功后,将匹配行的前后各n行都显示出来
-c :只显示匹配成功的行
-o :只显示匹配成功的内容
-v :反向过滤(小v)
-q :静默输出
-i :忽略大小写
-R :递归匹配
-r :递归匹配
-E :使用扩展正则,等价于egrep
l :只显示文件名
三:正则表达式
1.正则表达式的分类(grep) 1.普通正则表达式 2.扩展正则表达式
2.普通正则表达式
^ :已某字符开头 $ :已某字符结尾 . :匹配除换行符之外的任意单个字符 * :匹配前导字符的零次或者多次 [] :某组字符串的任意一个字符 [^] :取反 [a-z] : 匹配小写字母 [A-Z] :匹配大写字母 [a-z[A-Z]: 匹配字母 [0-9] :匹配数字 \ :转义富符 () :分组
3.扩展正则
{} :匹配的次数 {n} :匹配n次 {n,} :至少匹配n次 {n,m} :匹配n到m次 {,m} :最多匹配m次 + :匹配至少一个或多次前导字符 ? :匹配一个或者零个前导字符 | :或
四:正则与grep实战案例实战:
1,在/etc/passwd文件中,匹配以ftb开头的行
grep '^ftp' /etc/passwd ^ : 以ftp开头
2,在/etc/passwd文件中,匹配以bash结尾的行
grep 'bash$' /etc/passwd $ :以bash结尾
3,匹配本机中有哪些ip
ip: 192.168.15.100 正则匹配ip ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' | : 管道符,前面一个命令的结果交给后面一个命令处理 o : 只显示匹配成功的内容 E : 使用扩展正则 () : 组合 [0-9] : 0到9任意数字 {1,3} : 最少一个,最多3个 \ : 取消转义 \. : 取消转义 让.失去原有的功能 {3} : 匹配三次 [0-9] : 0-9任意数字 {1,3} : 最少一个,最多3个 结尾位数
4,要求将/etc/fstab中的去掉包含 # 开头的行, 且要求 # 后至少有一个空格
grep -vE '^#\ +' /etc/fstab -v : 反向过滤 取反 -E : 使用扩展正则 '^#\ +' : 以#号开头的行,空格取消转义后面至少有一个空格或多个 \ : 取消转义 + : 至少匹配一个或多个
5,找出文件中至少有一个空格的行
grep -E '\ +' xxx -E :扩展正则 \ : 取消转义空格 + : 空格至少匹配一个空格或多个空格
6,将 nginx.conf 文件中以 # 开头的行和空格,全部删除
grep -vE '^\ *#|^$' /etc/nginx/nginx.conf -v :取反 -E :扩展正则 '^\ *#' : 以取反空格的零个多个空格结尾的#号 |^$ : 或开头到结尾