linux進階操作:記錄
阿新 • • 發佈:2021-12-23
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