linux三剑客
grep
❖ 查找文件内容包含root的行数
❖ grep –n root test.txt
❖ 查找文件内容不包含root的行
❖ grep –nv root test.txt
❖ 查找文件内容包含root的行数
❖ grep –n root test.txt
❖ 查找文件内容不包含root的行
❖ grep –nv root test.txt
sed
❖ 在第四行后添加新字符串
❖ sed -e '4 a newline testfile' test.txt
❖ 在第二行后加上 newLine
❖ sed '2a drink tea' test.txt
❖ 在第二行前加上 newline
❖ sed '2i drink tea' test.txt
❖ 全局替换
❖ sed -e 's/root/hello/g' test.txt
❖ 直接修改文件内容
❖ sed -i 's/root/hello/g' test.txt
awk
❖ 搜索/etc/passwd有root关键字的所有行,并显示对应的shell
❖ awk -F: '/root/ {print $7}' /etc/passwd
❖ 打印/etc/passwd/的第二行信息
❖ awk -F: 'NR==2{print $0}' /etc/passwd
❖ 使用begin加入标题
❖ awk ‘BEGIN {print “BEGIN” ,“BEGIN” } { print $1,$2 }’ /etc/passwd
❖ 自定义分割符
❖ echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'
实战
找出log中的404 500的报错有多少条
❖ grep -E '\s500\s|\s404\s' nginx.log | wc –l
❖ awk '$9~/404|500/' nginx.log |wc -l
访问量最高的ip
❖ awk '{print $1}' nginx.log | sort | uniq -c | sort -nr | head -3
❖ cat /tmp/nginx.log | grep -o '^[0-9]*.[0-9]*.[0-9]*.[0-9]*' | sort| uniq -c | sort - rn| head -3
将topics后面的数字替换成numer
❖ grep '/topics/' nginx.log | sed 's@/topics/[0-9]*@/topics/number@'
将ip地址横向打印
❖ awk '{print $1}' nginx.log | sed ':1;N;s/\n/|/;t1'
❖ 检测指定pid的内存20次
❖ for i in {1..20};do top -n 1 -d 1 -p 435|grep 435 |awk '{print $11}';sleep 1; done