linux进阶操作:记录
linux进阶操作:记录
一、找出/proc/meminfo 文件中以s开头的行,至少用三种方式忽略大小写
1 grep -E '^[sS]' /proc/meminfo 2 sed -r -n '/^[sS]/p' /proc/meminfo 3 awk '/^[sS]/{print $0}/' /proc/meminfo 4 grep -iE '^s' /proc/meminte
二、显示当前系统上的以root、centos或者user开头的信息
1 grep -rE '^(root|centos|user)' /etc/
三、找出/etc/init.d/functions文件下包含小括号的行
1 grep -E '\(|\)' /etc/init.d/functions
四、输出指定目录的基名
1 pwd | awk -F/ '{print $NF}'
五、找出网卡信息中包含的数字
1 grep -oE '[0-9]+' /etc/sysconfig/network-scripts/ifcfg-ens3[23]
六、找出/etc/passwd下每种解析器的用户个数
1 awk -F: '{arr[$NF]++}END{for(i in arr){print i arr[i]}}' /etc/passwd
七、获取网卡中的ip,用三种方式实现
1 ip a | grep -oE '([0-9]{1,3}\.{3}[0-9]{1,3})' 2 ip a | sed -r -n '/([0-9]{1,3}\.){3}[0-9]{1,3}/p' 3 ip a | awk '/([0-9]{1,3}\.{3}[0-9]{1,3}/{if(NR==3){print $2}else{print $2,$4}}'
八、搜索/etc目录下,所有的html或.php文件中main函数出现的次数
1 grep -rE 'main' `find /etc/ -name "*.html" -o -name "*.php" | xargs ` | wc -l
九、过滤掉php.ini中注释的行和空行
1 yum install php php-devel 2 grep -vE '^\ *;|^$' /etc/php.ini
十、找出文件中至少有一个空格的行
1 grep -E '\ +' /etc/php.ini
十一、过滤文件中以#开头的行,后面至少有一个空格
1 grep -E '^#\ +' /etc/fstab
十二、查询出/etc目录中包含多少个root
1 grep -roE 'root' /etc/| wc -l
十三、查询出所有的qq邮箱
1 grep -E '[0-9a-zA-Z-_]+@qq\.com'
十四、查询系统日志中所有的error
1 grep -E 'error' /var/log/messages
十五、删除某文件中以s开头的行的最后一个词
1 grep -Ei '^s' 11.txt | grep -oE '[0-9a-zA-Z]+' | xargs | awk '{for(i=0;i<(NF -1);i++){print $i}}'
十六、删除一个文件中的所有数学
1 sed -r 's/[0-9]//g' 11.txt
十七、显示奇数行
1 awk -F: 'NR%2==1{print $0}' /etc/passwd
十八、删除passwd文件中以bin开头的行到nopody开头的行
1 sed -r '/^bin/,/^nobody/d' /etc/passwd
十九、从指定行开始,每隔两行显示一次空行
1 awk -F: '{n=5;if(NR<n){print $0}else{if((NR-5)%2==0){print "---"};print $0}}' /etc/passwd
二十、每隔5行打印一个空行
1 awk -F: '{if(NR%5==0){print " "}; print $0}' /etc/passwd
二十一、不显示指定字符的行
1 grep -vE 'g' 2.txt
二十二、将文件中1到5行中aaa替代成AAA
1 sed -r '1,5s/aaa/AAA/g' /etc/passwd
二十三、显示用户id为奇数的行
1 awk -F: '$3%2==1{print $0}' /etc/passwd
二十四、显示系统用户id为奇数的行
1 awk -F: '$3%2==1{print $0}' /etc/passwd
二十五、统计nginx日志中独立用户数(ip维度计算)
1 awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{arr[$1]++}END{for(i in arr){print i}}' access.log
二十六、统计php。ini中每个词
1 grep -oE '[0-9a-zA-Z]+' /etc/php.ini | awk '{arr[$1]++}END{for(i in arr){printf "%-15s | %-5d\n", i, arr[i]}}'
二十七、实时打印nginx的访问ip
1 tail -f /var/log/nginx/access.log | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' 2 tail -f /var/log/nginx/access.log |awk '{print $1}' #普通格式
二十八、找出nginx访问的峰值,按每个小时计算
#!/bin/bash NGINX_LOG=/var/log/nginx/access.log declare -A IP while read line do timestamp=`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"]=0 num=${IP["$timestamp"]} IP["$timestamp"]=`echo "$num + 1" | bc` done < $NGINX_LOG for i in ${!IP[*]} do if (( ${IP[$i]} >= 10 ));then echo "$i ${IP[$i]}" fi done
二十九、统计访问nginx前10的ip
1 grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/log/nginx/access.log | sort | uniq -c | sort -r | head