作為一個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
