grep
过滤
shell
# Linux系统会自动记录远程登陆的记录,存放在var/log/secure目录下,可以基于grep来筛选异常的日志记录。
# grep '过滤的单词' 文件名
[root@MiWiFi-RA67-srv log]# grep 'Failed password' secure
# 通过正则过滤 grep -P 大写的P
[root@MiWiFi-RA67-srv log]# grep 'Failed password' secure | grep -P "(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)"
# grep -Po 只过滤符合正则的
# sort -n 排序
# uniq -c 去重 -c统计次数
sed
取行、替换、修改
shell
# '/查找内容/p' /p固定写法 打印 /d排除掉内容,不会在原文件中删除
[root@MiWiFi-RA67-srv ~]# sed -n '/tcp/p' test.txt
awk
取列,默认以空格划分一列
shell
# 固定写法 $后面加列号
[root@MiWiFi-RA67-srv ~]# awk '{print $1}' test.txt
# 取指定的行 第三行
[root@MiWiFi-RA67-srv ~]# awk "NR==3" test.txt
# 指定分隔符 以:为分隔符
[root@MiWiFi-RA67-srv ~]# awk -F ':' '{print $1}' /etc/passwd
正则
- ^ 搜索以什么开头
- $ 搜索以什么结尾
- ^$ 空行,不是空格
- . 只能代表任意一个字符
- \ 转义 eg: . 只能代表小数点
- * 重复0个或多个前面的一个字符
- .* 匹配所有的字符 eg:^.*任意多个字符开头
- [abc] 匹配字符集合内任意一个字符[a-z]
- [^abc] ^在括号内表示非,不包含a或b或c
- {n,m} 重复n到m次
-
- 重复1次到多次
- ? 重复0次到多次