Linux中awk的簡單使用舉例

1 編寫腳本selinux.sh,實現開啓或禁用SELinux功能

通過sed命令對centos7的/etc/selinux/config文件進行編輯:
開啓selinux功能:sed -i.bak 's@SELINUX=disabled@SELINUX=enforcing@' /etc/selinux/config
關閉selinux功能:sed -i.bak 's@SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config

2 統計/etc/fstab文件中每個文件系統類型出現的次數

awk '/UUID/{fstype[$3]++}END{for(i in fstype){print i,fstype[i]}}' fstab
‘/UUID/{fstype[$3]++}’ 定義了一個數組fstype,這個數組是以fstab文件中的UUID所在行的,以空格爲分隔符號的第3列的文件類型爲數組的下標;
{for (i in fstype){print i,fstype[i]}} 數組的遍歷,以數組下標爲循環條件,然後打印數組下標及數組的值;
【示例】

Linux中awk的簡單使用舉例

3 提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有數字

 for循環,以字符個數作爲循環的條件;
 if判斷是否爲數字,如果爲數字,就做字符串賦值;
 最後打印字符串
【示例】

Linux中awk的簡單使用舉例

4 解決DOS***生產案例:根據web日誌或者或者網絡連接數,監控當某個IP 併發連接數或者短時內PV達到100,即調用防火牆命令封掉對應的IP,監控頻 率每隔5分鐘。防火牆命令爲:iptables -A INPUT -s IP -j REJECT
先寫一個監控峯值的腳本,再把腳本放到定時任務中執行;

{ip[$(NF-2)]++}END{for(i in ip){print i,ip[i]}}   以ip地址爲下標,遍歷一個數組;
{if($2>1)print $1}  打印數組中符合條件的值;
【示例】
 ss -nt | awk -F " +|:" 'NR>1{ip[$(NF-2)]++}END{for(i in ip){print i,ip[i]}}' | awk '{if($2>1)print $1}
 */5 * * * * /data/Scripts-44/010_awk.sh 每5分鐘執行一次腳本

Linux中awk的簡單使用舉例
Linux中awk的簡單使用舉例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章