题目

1、找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写
	有以下几种方法:
        [root@localhost ~]# grep -iE "^s" /proc/meminfo 
        [root@localhost ~]# grep -E "^[sS]" /proc/meminfo
        [root@localhost ~]# grep -E "^(s|S)" /proc/meminfo 
        [root@localhost ~]# sed -rn '/^[sS]/p' /proc/meminfo 
        [root@localhost ~]# sed -r -n '/^(s|S)/p' /proc/meminfo 
        [root@localhost ~]# awk '/^(s|S)/' /proc/meminfo    # 用awk加上上边的几行正则也可以实现
        
3、找出/etc/init.d/functions文件下包含小括号的行
	[root@localhost ~]# egrep '[()]' /etc/init.d/functions
	
4、输出指定目录的基名
	[root@localhost ~]# pwd | awk -F/ '{print $NF}'
	
5、找出网卡信息中包含的数字
	[root@localhost ~]# egrep -o "[0-9]+" /etc/sysconfig/network-scripts/ifcfg-*
	
6、找出/etc/passwd下每种解析器的用户个数
	[root@localhost ~]# awk -F: '{arr[$NF]++}END{for(i in arr){printf "%-15s %d\n" ,i,arr[i]}}' /etc/passwd
	
7、过滤网卡中的ip,用三种方式实现
	[root@localhost ~]# ip a | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}"
	[root@localhost ~]# ip a | sed -rn '/([0-9]{1,3}\.){3}[0-9]{1,3}/p'
	[root@localhost ~]# ip a | awk '/([0-9]{1,3}\.){1,3}[0-9]{1,3}/{print $2,$4}' | awk '{if(NR==1){print $1}else {print $0}}'
	
8、搜索/etc目录下,所有的.html或.php文件中包含的main函数出现的次数
	[root@localhost ~]# egrep -co "main" $(find /etc/ -name "*.html" -o -name "*.php")
	[root@localhost ~]# egrep -o "main" $(find /etc/ -name "*.html" -o -name "*.php") | wc -l
	
9、过滤/etc/fstab中注释的行和空行
	[root@localhost ~]# egrep -v "^ *#|^$" /etc/fstab
	[root@localhost etc]# sed -rn '/^ *#|^$/p' /etc/fstab
	[root@localhost etc]# awk '/^ *#|^$/' /etc/fstab
	
10、找出文件中至少有一个空格的行
	[root@localhost ~]# egrep " +" /etc/passwd
	[root@localhost etc]# sed -rn '/ +/p' /etc/passwd
	[root@localhost etc]# awk '/ +/' /etc/passwd
	
11、过滤文件中以#开头的行,后面至少有一个空格
	[root@localhost ~]# egrep "^ *# +" /etc/fstab
	[root@localhost ~]# sed -rn '/^ *# +/p' /etc/fstab
	
12、查询出/etc目录中包含多少个root
	[root@localhost ~]# egrep -oR "root" /etc | wc -l
	
13、查询出所有的qq邮箱
	[root@localhost ~]# egrep '[0-9a-zA-Z]+@qq.com' 1.txt 
	
14、查询系统日志(/var/log/message)中所有的error
	[root@localhost ~]# egrep -i 'error' /var/log/message
	
16、删除一个文件中的所有数学
	[root@localhost ~]# sed -r 's/[0-9]//g' 1.txt
	
17、显示奇数行
	[root@localhost ~]# awk -F: 'NR%2{print $0}' /etc/passwd
	
18、删除passwd文件中以bin开头的行到nobody开头的行
	[root@localhost ~]# sed -r '/^bin/,/^nobody/d' /etc/passwd

20、每隔5行打印一个空格行
	[root@localhost ~]# awk '{if(NR%5==0){print "%s\n\n"}else {print $0}}' /etc/passwd
	
21、不显示指定root字符的行
	[root@localhost ~]# egrep -v 'root' /etc/passwd
	
22、将文件中1到5行中aaa替换成AAA
	[root@localhost ~]# sed -r '1,5s/aaa/AAA/g' 1.txt
	
23、显示用户id为奇数的行
	[root@localhost ~]# awk -F: '{if($%2){print $0}}' /etc/passwd
	
25、统计nginx日志中访问量(ip维度计算)
	[root@localhost ~]# egrep -c '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/access
	
26、统计访问nginx前10的ip
	[root@localhost ~]# egrep -o "^([0-9]{1,3}\.){3}[0-9]{1,3}" /var/access.log | sort | unip -c | sorc -rn | head -10
	
    知识储备:
        sort	: 处理排序(默认,按照第一个字符进行排序)

        -n : 按照数值得大小进行排序
        -r : 倒序排序

        uniq 	:处理重复(只能够处理相邻的重复)

        -c : 打印出重复次数

        head 	:从文本头部开始读数据(默认只读前10行)

        -n  : 读前n行
	
27、统计nginx日志中的访问人数
	[root@localhost ~]# egrep -o "^([0-9]{1,3}\.){3}[0-9]{1,3}" /var/access.log | awk '{arr[$0]++}END{print length(arr)}'