day16 三剑客之练习题+sort、uniq、head

一、练习题

1、找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写
grep -iE "^s" /proc/meminfo
grep -E "^[sS]" /proc/meminfo
sed -n -r "/^[sS]/p" /proc/meminfo
awk "/^[sS]/" /proc/meminfo

2.找出/etc/init.d/functions文件下包含小括号的行
egrep "(\(.*\))" /etc/init.d/functions
egrep "[()]" /etc/init.d/functions

3.输出指定目录的基名
[root@kubernetes network-scripts]# pwd | awk -F/ '{print $NF}'

4.找出网卡信息中包含的数字
grep -o-E "[0-9]+" /etc/sysconfig/network-scripts/ifcfg-*

5.找出/etc/passwd下每种解析器的用户个数
awk -F: '{arr[$NF]++}END{for(i in arr){printf "%-15s %s \n",i,arr[i]}}' /etc/passwd

6.过滤网卡中的ip,用三种方式实现
ip a |egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}'
ip a |sed -rn '/([0-9]{1,3}\.){3}[0-9]{1,3}/p'
ip a |awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $2,$4}'|awk '{if (NR==1){print $1}else {print $1,$2}}'

7.搜索/etc目录下,所有的.html或.php文件中包含的main函数出现的次数
grep -oE 'main' $(find /etc/ -name "*.html" -o -name "*.php") | wc -l

8.过滤/etc/fstab中注释的行和空行
grep -vE '^$|^ *#' /etc/fstab

9找出文件中至少有一个空格的行
grep -E " +" /etc/fstab

10.过滤文件中以#开头的行,后面至少有一个空格
grep -E '^# +' /etc/fstab

11.查询出/etc目录中包含多少个root
egrep -oR 'root' /etc/ | wc -l

12.查询出所有的qq邮箱
egrep '[0-9a-zA-Z]+@qq.com' 1.txt

13.查询系统日志(/var/log/message)中所有的error
grep -iE 'error' /var/log/messages

14.删除一个文件中的所有数学
sed -r 's/[0-9]+//g' 1.txt

15.显示奇数行
awk -F: 'NR%2{print $0}' /etc/passwd

16.删除passwd文件中以bin开头的行到nobody开头的行
sed -r "/^bin/,/^nobody/d" /etc/passwd

17.每隔5行打印一个空格行
awk -F: '{if(NR%5==0){printf "%s\n\n",$0}else{print $0}}' /etc/passwd

18.不显示指定字符的行
grep -vE 'root' /etc/passwd

20.将文件中1到5行中aaa替换成AAA
sed -r '1,5s/aaa/AAA/g' 1.txt

21显示用户id为奇数的行
 awk -F: '{if($3%2){print $0}}' /etc/passwd

22.统计nginx日志中访问量(ip维度计算)
grep -cE "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/nginx/access.log

23.统计访问nginx前10的ip
grep -oE "^([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

     
24.统计nginx日志中的访问人数
grep -oE "^([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/nginx/access.log |sort|uniq -c|wc -l
grep -oE "^([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/nginx/access.log |awk '{arr[$0]++}END{print length(arr)}'

25.实时统计Nginx访问人数
tail -f /var/log/nginx/access.log |grep -oE "^([0-9]{1,3}\.){3}[0-9]{1,3}"

26.实时统计,当一个ip的访问量在一分钟之内达到了10次,则立即屏蔽

二、sort、uniq、head

知识储备:
sort :处理排序(默认,按照第一个字符进行排序)
     -n:按照数值的大小进行排序
     -r:倒序排序
uniq:处理重复(只能够处理相邻的重复)
      -c:打印出重复次数
head:从文本头部开始读数据(默认只读前10行)
      -n:读前n行

 


 

 

 

 

posted @ 2021-10-12 10:09  甜甜de微笑  阅读(139)  评论(0编辑  收藏  举报