大家好,我是云炬学长。基于目前很多企业都在使用 Linux 操作系统,掌握 Linux 命令行已经成为运维人必备的基础知识和技能,学习命令是为了更好地解决问题。
上一篇分享了运维中遇到的问题及解决办法,这次分享 Linux 的常用基础命令 grep 。
grep 查找文件中符合条件的字符串,与 sed、awk 组成 Linux 的三剑客,语法格式:grep [选项] 关键字 文件名
关键字加引号(单引号,双引号),不加引号的区别
关键字加引号,关键字会被看成一个整体,可以包含空格或特殊字符
1)单引号
如果关键字包含特殊字符($ 和 ' 除外),使用单引号会对特殊字符转义,进行完全匹配搜索
2)双引号
关键字即使包含特殊符号,使用双引号原样输出
3)不加引号
搜索包含关键字中任意单词的文本行
一、打印包含关键字的行
语法格式:grep "关键字" 文件名
查找包含关键字 root 的行,并显示出来
二、打印以某关键字开头的行
语法格式:grep "^关键字" 文件名
在关键字前面加 ^ 号,表示搜索以关键字开头的行
三、打印某关键字结尾的行
语法格式:grep "关键字$" 文件名
在关键字后面加上 $ 符号,表示查找以关键字结尾的行
四、不区分大小写打印关键字的行
语法格式:grep -i "关键字" 文件名
打印包含 root 的行,可以是 Root ,ROOT 等等
五、打印关键字并显示行号
语法格式:grep -n "关键字" 文件名
在文件 test.txt 中查找关键字的同时,并且显示行号
六、递归搜索关键字
语法格式:grep -r 关键字
搜索所有的文件及子目录,包含关键字的行
grep -r "root" /home/back
七、统计匹配某关键字的次数
语法格式:grep -c "关键字" 文件名
统计包含 root 的行数
八、过滤空白行
固定的语法格式: grep -v "^$" 文件名
先输出所有内容,然后键入命令对比后,更好展示
九、查找包含多个关键字的行
语法格式:grep -E "关键字1|关键字2" 文件名
查找包含 root 或者 sync 的行
grep -E "root|sync" test.txt
这里使用了 Linux 正则表达式,Linux 正则表达式常用元字符如下