从老男孩老师那里抓的题:

处理以下文件内容,将域名取出并进行计数排序,如处理:(百度和sohu面试题)

oldboy.log http://www.etiantian.org/index.html http://www.etiantian.org/1.html http://post.etiantian.org/index.html http://mp3.etiantian.org/index.html http://www.etiantian.org/3.html http://post.etiantian.org/2.html

shell实现方式

awk -F "/"  '{print $3}'  oldboy.log | sort -r | uniq -c
cut -d "/" -f3 oldboy.log  | sort -r | uniq -c
cat oldboy.log | sed 's/^ http:\/\///g' | sed 's/\/.*$//g' | sort -r | uniq -c
以上三种实现方式比较简单
awk -F "/" '{++S[$3]} END {for(key in S) print key,S[key]}' oldboy.log|sort -k2

第四种详解:


python实现:


# coding: utf-8
import sys
from itertools import  groupby
#ListFile = sys.argv[1]

def demo(ListFile):
   reList = []
   files =
file(ListFile,'r')
   lines = files.readlines()
for item in lines:
#print item,
rLIst = item.split("/")
       r = rLIst[
2]
       reList.append(r)

   result = [(a,
len(list(b))) for a,b in groupby(sorted(reList))]
return result
if __name__ == "__main__":
#demo(ListFile)
print demo("/tmp/oldboy.log")