1. 正则表达式回顾:
正则表达式分类: | 命令: | |
基础正则 | ^ $ . * .* [] [^] | grep/sed/awk |
扩展正则 | | + () ? {} | egrep/sed -r/awk |
2. 三剑客特点及其适用场景:
命令 | 特点 | 场景 |
grep | 过滤 | grep命令过滤速度是最快的 |
sed | 替换,修改文件内容,取行 | 如果要进行替换/修改文件内容 取出某个范围的内容(日志中具体从几点到几点的) |
awk | 取列,统计计算 | 取列 对比,比较 统计,计算(awk数组) |
3. 三剑客——grep
(1)选项及含义:
选项: | 含义: |
--color=auto | 对匹配到的文本着色后高亮显示 |
-i | 忽略字符的大小写 |
-o | 仅显示匹配到的字符串本身 |
-v | 显示不能被模式匹配到的行;取反 |
-c | 统计出现了多少行,类似于wc -l |
-n | 显示行号 |
-w | 精确匹配整个单词 |
-E | =egrep;支持扩展正则:遇到 | + ?(){} |
-A | -A5:匹配你想要的内容后并且显示接下来的5行 |
-B | -B5:匹配你想要的内容后并且显示接上面的5行 |
-C | -C5:匹配你想要的内容后并且显示接上下的5行 |
(2)应用案例:
1)显示/etc/passwd文件中不以/bin/bash结尾的行:
[root@WWcentos ~]# grep -v "/bin/bash$" /etc/passwd
2)找出/etc/passwd文件中的两位数或三位数:
[root@WWcentos ~]# grep -E "[0-9]{2,3}" /etc/passwd
或者:
[root@WWcentos ~]# grep "\<[0-9]\{2,3\}" /etc/passwd
3)找出/etc/rc.d/rc.sysinit或者/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白的行:
[root@WWcentos ~]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg
4)找出"netstat -tan" 命令中的以'LISTEN'后跟0,1或多个空白字符结尾的行:
[root@WWcentos ~]# netstat -tan |grep "LISTEN[[:space:]]*$"
5)找出/proc/meminfo文件中,所有以大写或小写s开头的行,至少三种方式:
[root@WWcentos ~]# grep -i '^s' /proc/meminfo
[root@WWcentos ~]# grep -E "^(s|S)" /proc/meminfo
[root@WWcentos ~]# grep "^[sS]" /proc/meminfo
6)显示当前系统上root,centos,或者user1用户的信息:
[root@WWcentos ~]# grep -E "^(root|centos|user1)\>" /etc/passwd
4. 三剑客——sed
(1)sed用法:sed [OPTION] {sed - commands} [input-file]
sed 选项 sed 内置命令符 输入文件
常用选项:
选项: | 含义: |
-n | 输出模式空间的内容至屏幕; 取消默认sed的输出,常与sed内置命令符p一起使用 |
-e | 多次编辑,不需要管道符 |
-f | 每行一个编辑命令 |
-r | 支持使用扩展正则表达式 |
-i | 直接编辑原文件;直接将修改结果写入文件;不用-i,sed修改的是内部数据 | </