面試筆試-指令碼-1:使用shell指令碼輸出登入次數最多的使用者

來源:互聯網
上載者:User

標籤:指令碼   shell   面試   筆試   

原題目:

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

之前剛看到這個題目時,馬上沒有想到一行直接解決的辦法,雖然知道可以先進行排序,但是後面由於對uniq命令的參數不熟悉,所以用了比較背的辦法,就是直接編寫shell指令碼程式來解決這個問題。

現在假設測試資料如下:

111.111.111.11110.10.10.10222.222.222.222111.111.111.111333.333.333.33310.10.10.10111.111.111.111333.333.333.33310.10.10.10222.222.222.222333.333.333.33310.10.10.10111.111.111.111222.222.222.222333.333.333.33310.10.10.10111.111.111.111111.111.111.111333.333.333.333333.333.333.333333.333.333.333222.222.222.22210.10.10.10222.222.222.222111.111.111.111333.333.333.333333.333.333.333111.111.111.11110.10.10.10333.333.333.333222.222.222.222222.222.222.222222.222.222.222222.222.222.222111.111.111.111111.111.111.111333.333.333.333333.333.333.333333.333.333.333333.333.333.333

解決此問題的指令碼程式如下:

#!/bin/cshset LINES=`sort $1`set i=1set num=`cat $1 | wc -l`set max=0set cur=""set counter=1set ip=""while ( $i <= $num  )if ( $LINES[$i] != $cur ) thenif ( $max < $counter  )thenset max=$counterset ip=$curendifset counter=1set cur=$LINES[$i]else@ counter++endif@ i++endif ( $max < $counter ) thenset max=$counterset ip=$curendifecho $ip


首先對IP地址進行排序,排序後找到重複次數最多的那個IP地址就可以了。這個邏輯上還是比較簡單的。

但是如果知道可以用uniq命令輸出重複的次數的話,這個問題就變得很簡單了:

cat test.txt | sort | uniq -c | sort -r -n -k 1 | head -n 1 | awk ‘{print $2}‘

uniq -c命令將以重複次數作為第一列輸出,然後我們使用sort命令的-k指定按照第一列進行排序,-n表示使用數值排序方法而不是預設的字串排序,-r表示降序輸出。使用head輸出第一行,再用awk 輸出第二列便是重複次數最多的IP地址

面試筆試-指令碼-1:使用shell指令碼輸出登入次數最多的使用者

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.