1. 程式人生 > >linux的Shell程式設計題目輸出記錄最多的IP

linux的Shell程式設計題目輸出記錄最多的IP

一個文字型別的檔案,裡面每行存放一個登陸者的IP(某些行是重複的),寫一個shell指令碼輸出登陸次數最多的使用者。

Ip_input.txt的內容假設如下: 219.217.49.14 175.43.4.87 87.48.98.1 59.73.38.25 219.217.50.14 59.92.48.32 219.217.49.14 59.72.38.142 59.73.38.25 219.217.49.14

#! /bin/bash
# test.sh
sort ip_input | uniq -c | sort | tail -1 | awk '{print $2}' 或者:
sort ip_input | uniq -c | sort -r | head -1 | awk '{print $2}'

uniq -c 選項。它的作用是將重複行去掉並且在每行的前面新增此行重複的次數 sort命令的預設排序方式是升序,使用 -r 選項逆序排序結果,則出現次數最多的IP則排在了第一行

[[email protected] ~]# cat 1.log | awk ‘{a[$0]++}END{for(i in a)if(a[i]>max)max=a[i];print a[i],i}’ 3 219.217.49.14

shell程式如下:

方法一: #cat file | sed -e ‘s/http:////’ -e ‘s//.*//’| sort | uniq -c | sort -nr | head -10 sort -n 依照數值的大小排序。

方法二: #awk -F/ ‘{print $3}’ file|sort -r|uniq -c|awk ‘{print $1 “\t”,$2}’ 從a.log檔案中提取包含"WARNING"或"FATAL",同時不包含"IGNOR"的行,然後提取以":"分割的第5個欄位. grep -E ‘WARNING|FATAL’ file|grep -v ‘IGNOR’|awk -F: ‘{print $5}’ 在shell環境中,如何檢視遠端Linux系統運行了多少時間? ssh [email protected]被監控的主機ip “uptime”|awk ‘{print $3,$4}’