linux下批量修改存有超大數據量IP文件中的IP內容以及去重排序


作為一個linux的學徒,分享一下自己解決這個小問題的心得,在處理這個問題時使用了一個小技巧感覺很適用,個人發覺linux的終端真滴是非常強大,下面就詳細地介紹這個問題以及解決辦法吧

問題描述:由於要分析登錄Ip所以有很多放有不同Ip的日志文件,首先要將所有log文件合並成一個log文件,並將每一個Ip最后一位修改為0,如,原IP為127.0.0.1,現Ip為127.0.0.0

解決方法:使用linux終端命令

     1、先合並多個日志文件為一個日志文件:

        cat test1.log test2.log test3.log > test.log

     2、這里的test.log包含了所有文件的Ip,如何將這些Ip最后一位改為0呢,重點來了,起初我想用正則表達式修改,未果,遂用了一個小技巧:

        1> 先在當前目錄下新建一個test_middle.log留着備用

        2> cut -d. -f1,2,3 test.log > test_middle.log

        3> cat test_middle.log 發現IP類似127.0.0 ,想必大家也知道上個shell語句的作用了吧,沒錯就是分詞,取前三段然后寫入到test_middle.log中

        4> 再把test_middle.log 中每個Ip末尾加上".0",然后再寫入到test.log即可,shell腳本:sed 's/$/&.0/g' test_middle.log > test.log

    3、刪除文件的空行:sed -i '/^\s*$/d' test.log

    4、去重排序:sort  test.log | uniq(這樣排序內容只顯示在終端),如果要獲得修改后的內容,可以再寫入另外一個文件中,如,sort test.log | uniq > another.log

 

注:問題的解決方法不止一種,如果朋友們也有好的方法不妨貼出來大家一起學習,在學習的同時還請尊重他人的勞動成果,So,轉載請注明出處:http://www.cnblogs.com/ForeverLover/p/5085509.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM