运维三剑客——grep
grep
全拼:Global search Regular expression and Print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式的元字符及文本字符所编写出的过滤条件;
语法:
grep [options] [pattern] file
命令 参数 匹配模式 文件数据
-i:ignorecase,忽略字符的大小写;
-o:仅显示匹配到的字符串本身;
-v,--invert-match:显示不能被模式匹配到的行;
-E:支持使用扩展的正则表达式元字符;
-q,--quiet,--silent:静默模式,即不输出任何信息;
grep命令是Linux系统中最重要的命令之一,功能是从文本文件 或 管道数据流中筛选匹配的 行 和 数据,如果再配合 正则表达式,功能十分强大,是Linux运维人员必备的命令
grep命令里的 匹配模式 就是你想要找的东西,可以是 普通的文字符号,也可以是正则表达式
参数选项 说明
-v 排除匹配结果
-n 显示匹配行与行号
-i 不区分大小写
-c 只统计匹配的行数
-E 使用egrep命令
--color=auto 为grep过滤结果添加颜色
-w 只匹配过滤的单词
-o 只输出匹配的内容
案例
cat /etc/passwd > /tmp/test_grep.txt
grep "login" /tmp/test_grep.txt -n #找出login有关行
grep "login" /tmp/test_grep.txt -n -v #找出没有login的行
grep "ROOT" /tmp/test_grep.txt -i #忽略大小写,找出root
grep -E "root|sync" /tmp/test_grep.txt --color=auto #同时过滤出root和sync有关行
grep "login" /tmp/test_grep.txt -c #统计匹配结果的行数
grep "login" /tmp/test_grep.txt -n -o #只输出匹配出的内容
grep "oldboy" /tmp/test_grep.txt -w #完整匹配,字符串精确匹配,整个单词
grep -E "^#|^$" /tmp/test_grep.txt #过滤掉空白和注释行
筛选出pwd.txt文件下包含“root”的行
筛选出pwd.txt文件下包含“root”的行,并指出是哪一行的
筛选出pwd.txt文件下包含“root”的行,不区分大小写,并指出是哪一行的
筛选出pwd.txt文件下的空行,并指出是哪一行的
筛选出pwd.txt文件下的空行,并指出是哪一行的和数量
筛选出pwd.txt文件下的除了是空行的行,并指出是哪一行的
筛选出pwd.txt文件下除了以‘#’开头的行的所有行
筛选出pwd.txt文件下的空行,并指出是哪一行的
匹配m开头的行
匹配i开头的行
匹配最后一个结尾的行;注意如果想匹配以“.”结尾的,需要转义。
匹配‘/bin/bash’的行
匹配‘/bin/bash’的行,但输出匹配内容
匹配a到b的所有内容
匹配i ,-E是为了匹配扩展正则表达式