Linux中 grep
, awk
, sed
三个命令在进行日志处理的时候使用的比较多。被称为 Linux 三剑客
grep 过滤文本
- 查看 /etc/passwd 文件。
过滤出包含 nologin
grep "nologin" /etc/passwd
- 过滤出所有的数字并高亮
[0-9] 表示所有的数字
grep '[0-9]' /etc/passwd
[a-z] 表示小写的 26个英文字符
grep '[a-z]' /etc/passwd
[0-9A-Za-z] 表示数字和英文
grep '[a-zA-Z0-9]' /etc/passwd
附件
https://www.bilibili.com/video/BV1Xh411U78D/
点击查看【bilibili】
awk 处理文本
查看文件 cat /opt/zbox/logs/apache_access.log
里面的内容有很多
- 我只想查看日志中 ip
awk '{ print $1}' /opt/zbox/logs/apache_access.log
'{ print }'
打印输出,固定写法- $1 第一列的内容
sort 排序
对上面的ip地址继续排序awk '{ print $1}' /opt/zbox/logs/apache_access.log | sort
uniq 去除重复
去除重复并排序 ```shell [root@VM-0-14-centos ~]# awk ‘{ print $1}’ /opt/zbox/logs/apache_access.log | sort | uniq 103.123.42.226 107.189.14.98 114.88.77.40 155.4.66.65 167.248.133.44 168.194.176.195 175.10.45.22 199.195.248.54 212.69.18.96 218.82.175.249 218.82.229.162 45.180.194.183 66.240.192.82awk '{ print $1}' /opt/zbox/logs/apache_access.log | uniq
去除重复并排序并统计出现的次数
```shell
[root@VM-0-14-centos ~]# awk '{ print $1}' /opt/zbox/logs/apache_access.log | sort | uniq -c
1 103.123.42.226
1 107.189.14.98
155 114.88.77.40
1 155.4.66.65
2 167.248.133.44
1 168.194.176.195
1 175.10.45.22
1 199.195.248.54
1 212.69.18.96
14 218.82.175.249
1 218.82.229.162
1 45.180.194.183
1 66.240.192.82
sed 文件
- 编辑文件 /tmp/helloworld.txt ```shell hi, what is your name? my name is hanmeimei, and you? nice to meet you.
2. 将文件中的内容 `you` 替换为 `he`
```shell
sed -i 's/you/he/' /tmp/helloworld.txt
- -i 覆盖文件内容
- s/you/he/ 搜索you并替换he