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 

 

posted @ 2021-12-23 19:13  Roseblacko  阅读(41)  评论(0编辑  收藏  举报