AI智能
改变未来

Linux 三剑客练习题


三剑客练习题

1、找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写

# 第一种方式[root@localhost ~]# grep -Ei \'^s\' /proc/meminfoSwapCached:            0 kBSwapTotal:             0 kBSwapFree:              0 kBShmem:              5552 kBSlab:              33204 kBSReclaimable:      13648 kBSUnreclaim:        19556 kB# 第二种方式[root@localhost ~]# awk  \'/^(s|S)/{print $0}\' /proc/meminfo[root@localhost ~]# awk  \'/^s|^S/{print $0}\' /proc/meminfo[root@localhost ~]# awk \'/^[sS]/{print $0}\' /proc/meminfoSwapCached:            0 kBSwapTotal:             0 kBSwapFree:              0 kBShmem:              5584 kBSlab:              33536 kBSReclaimable:      13736 kBSUnreclaim:        19800 kB# 第三种方式[root@localhost ~]# sed -nr \'/^(s|^S)/p\' /proc/meminfoSwapCached:            0 kBSwapTotal:             0 kBSwapFree:              0 kBShmem:              5584 kBSlab:              33536 kBSReclaimable:      13736 kBSUnreclaim:        19800 kB

2、显示当前系统上的root,centos或者use开头的信息

[root@localhost ~]#  grep -Er \'^(centos|root|user)\' /

3、找出/etc/init.d/function文件下包含小括号的行

[root@localhost etc]# grep -oE \'\\(|\\)\'  /etc/init.d/functions

4、输出指定目录的基名

[root@localhost etc]# pwd | awk -F \'/\' \'{print $NF}\'

5、找出网卡信息中包含的数字

[root@localhost etc]# ip a | grep -oE \'[0-9]+\'

6、找出/etc/passwd下每种解析器的用户个数

[root@localhost ~]# awk -F\':\' \'{print $NF}\' /etc/passwd | sort | uniq -c |column -t2   /bin/bash1   /bin/sync1   /sbin/halt18  /sbin/nologin1   /sbin/shutdown

7、过去网卡中的ip,用三种方式实现

# 第一种[root@localhost ~]# ip a | grep -oE \'([0-9]{1,3}\\.+){3}[0-9]{1,3}\'127.0.0.1192.168.15.100192.168.15.255172.16.1.100172.16.15.255# 第二种# 第三种

8、搜索/目录下,所有的.html或.php文件中main函数出现的次数

# /etc目录下没有以.html或以.php结尾的文件# 我从根查的[root@localhost ~]# grep -Eo \'main\' `find / -type f -regex ".*\\.\\(html\\|php\\)"` | wc -l[root@localhost ~]# grep -oE \'main\' `find / -name \'*.html\' -o -name \'*.php\'` | wc -l

9、过滤掉php.ini中注释的行和空行

[root@localhost etc]#  grep -vE \'^\\ *;|^$\' /etc/php.ini

10、找出文件中至少有一个空格的行

[root@localhost ~]# grep -E \'\\ +\' a.sh

11、过滤文件中以#开头的行,后面至少有一个空格

[root@localhost ~]# grep -E \'^#\\ +\' a.sh

12、查询出/etc目录中包含多少个root

[root@localhost ~]# grep -Eor \'root\' /etc/ | wc -l

13、查询出所有的qq邮箱

[root@localhost ~]# grep -Er "[0-9a-zA-Z-_\\.]+@qq\\.com" a.sh

14、查询系统日志中所有的error

[root@localhost /]# grep -orE \'error\' /var/log/messages

15、删除某文件中以s开头的行的最后一个词

[root@localhost /]# grep -E \'^s\' /etc/passwd|sed -r \'s/[0-9a-zA-Z]+$//g\' [file]

16、删除一个文件中的所有数字

[root@localhost /]# sed -r \'s/[0-9]+//g\' /root/a.sh

17、显示奇数行

[root@localhost /]# awk \'{if(NR%2==1)print NR,$0}\' /root/a.sh[root@localhost /]# awk \'NR%2==1{print NR,$0}\' /root/a.sh1  asdfgdghgf aadadadad3 asd adas sdasdas asdasdahgf5 baaaaaaaaaaaaaaaaaaaabbbbbbbb7  ppppp9 das1231423434gfdgfgfdgdf11 s1111ssss asdsgfh13 sagdfg3356fff

18、删除passwd文件中以bin开头的行到nobody开头的行

[root@web02 ~]# sed -r \'/^bin/,/^nobody/d\' /etc/passwd

19、从指定行开始,每隔两行显示一次

awk -F: \'{if(NR>3){num=(NR-3)%2; if(num){print $0}}}\' /etc/passwd# 没写

20、每隔5行打印一个空格

[root@localhost /]# awk -F: \'{if(NR%5==0){print " "}print $0}\' /root/a.sh

21、不显示指定字符的行

[root@localhost /]# grep -Ev \'g\' a.sh

22、将文件中1到5行中aaa替换成AAA

[root@localhost /]# sed -r \'1,5 s/a/A/g\' /root/a.sh | head -n5Asdfgdghgf AAdAdAdAdsdAsdAsdA hjhjjgAsd AdAs sdAsdAs AsdAsdAhgfAsdAs AsdAsdAd AdAsdAsdbAAAAAAAAAAAAAAAAAAAAbbbbbbbb

23、显示用户id为奇数的行

[root@localhost /]# awk -F: \'{if ($3%2==1) print NR,$0}\' /etc/passwd2 bin:x:1:1:bin:/bin:/sbin/nologin4 adm:x:3:4:adm:/var/adm:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync8 halt:x:7:0:halt:/sbin:/sbin/halt10 operator:x:11:0:operator:/root:/sbin/nologin13 nobody:x:99:99:Nobody:/:/sbin/nologin15 dbus:x:81:81:System message bus:/:/sbin/nologin16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin17 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin18 abrt:x:173:173::/etc/abrt:/sbin/nologin20 postfix:x:89:89::/var/spool/postfix:/sbin/nologin21 mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

24、显示系统普通用户,并打印系统用户名和id

[root@localhost /]# awk -F: \'{if($3>=1000){print "用户名:" $1"用户id:"$3}}\' /etc/passwd用户名:hammer用户id:1000

25、统计nginx日志中访问量(ip唯独计算)

[root@localhost ~]# awk \'/([0-9]{1,3}\\.){3}[0-9]{1,3}/{arr[$1]++}END{for(i in arr){print i}}\' access.log

26、实时打印nginx的访问ip

[root@localhost ~]# grep -oE \'[0-9a-zA-Z]+\' /etc/php.ini | awk \'{arr[$1]++}END{for(i in arr){printf "%-15s | %-5d\\n", i, arr[i]}}\'

27、统计php.ini中每个词的个数

[root@localhost ~]# egrep -o "[a-Z]+" php.ini | wc -l

28、统计1分钟内访问nginx次数超过10次的ip

#!/bin/bashNGINX_LOG=/var/log/nginx/access.logTIME=`date +%s`DATE=`echo $TIME - 3600 | bc`declare -A IPwhile read linedotimestamp=`echo $line | grep -oE \'[0-9]{4}.*T[0-9]{2}:[0-9]{2}:[0-9]{2}\'`timestamp=`date -d "$timestamp" +%s`if (( $TIME >= $timestamp && $DATE <= $timestamp ));thenip=`echo $line| grep -oE \'([0-9]{1,3}\\.){3}[0-9]{1,3}\'`number=`echo ${IP["$ip"]} | wc -L`[ $number -eq 0 ] && IP["$ip"]=0num=${IP["$ip"]}IP["$ip"]=`echo "$num + 1" | bc`fidone < $NGINX_LOGfor i in ${!IP[*]}doif (( ${IP[$i]} >= 10 ));thenecho $ifidone

29、找出nginx访问的峰值,按每个小时计算

#!/bin/bashNGINX_LOG=/var/log/nginx/access.logdeclare -A IPwhile read linedotimestamp=`echo $line | grep -oE \'[0-9]{4}.*T[0-9]{2}:[0-9]{2}:[0-9]{2}\'`timestamp=`date -d "$timestamp" +%Y%m%d%H`number=`echo ${IP["$timestamp"]} | wc -L`[ $number -eq 0 ] && IP["$timestamp"]=0num=${IP["$timestamp"]}IP["$timestamp"]=`echo "$num + 1" | bc`done < $NGINX_LOGfor i in ${!IP[*]}doif (( ${IP[$i]} >= 10 ));thenecho "$i ${IP[$i]}"fidone

30、统计访问nginx前10的ip

grep -oE \'([0-9]{1,3}\\.){3}[0-9]{1,3}\' /var/log/nginx/access.log | sort | uniq -c | sort -r | head

【如写错,请指正】

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Linux 三剑客练习题