1. 程式人生 > 其它 >linux進階操作:記錄

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

1sed -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