import java.util.*;
import java.io.*;
public class ProURL{
private HashMap map;
public ProURL(){
this.map=new HashMap();
}
private String parseURL(String fPath){
String rFile="rurl.txt";
try{
FileReader fr=new FileReader(fPath);
BufferedReader br=new BufferedReader(fr);
FileWriter fw=new FileWriter(rFile);
BufferedWriter bw=new BufferedWriter(fw);
String str;
while((str=br.readLine())!=null){
StringBuffer tmp;
String pre;
String[] array=str.split("/");
int len=array.length;
pre=array[0]+"//";
try{
for(int i=2;i<len-1;i++){
tmp.append(array[i]);
String strTmp=tmp.toString();
strTmp=strTmp+"\n";
bw.write(strTmp);
pre=strTmp;
}
bw.flush();
bw.close();
fw.close();
}catch(Exception ex){
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return rFile;
}
private void addURL(String url){
if(map.containsKey(url)){
int c=((Integer)map.get(url)).intValue()+1;
map.put(url,new Integer(c));
}else{
map.put(url,1);
}
}
public void process(String fPath){
String rPath=parseURL(fPath);
FileReader fr=new FileReader(rPath);
BufferedReader br=new BufferedReader(fr);
String url;
while((url=br.readLine())!=null){
this.addURL(url);
}
fr.close();
br.close();
}
public void main(String[] args){
ProURL pro=new ProURL();
String fPath="url.txt";
pro.process(fPath);
}
}
shell命令:
awk -F/ '{pre=$1"//";i=3; while(i<NF){str=pre$i"/"; count[str]++;i++;}} END{for(url in count){ print url,count[url];}}' urlfile
看来shell还是强大的。
分享到:
相关推荐
@Unique 带有参数时,通过仅返回列表里第一次出现的每个成员来从文本列表里删除重复值 @UpperCase 将指定字符串里的小写字母转换为大写 @URLGetHeader 从 URL 中返回指定的超文本传输协议 (HTTP) 的标题信息 @URL...
5.4.12 PROPER——将文本中每个单词的首字母转换为大写 181 5.4.13 VALUE——将文本型数字转换为数值 182 5.4.14 TEXT——多样化格式设置函数 183 5.4.15 FIXED——将数字按指定的小数位数取整 184 5.5 查找与...
2.6 处理文件中的每个词 68 2.7 随机输入/输出 70 2.8 更新随机存取文件 71 2.9 从zip文件中读取数据 73 2.10 处理字符串中的zip文件 74 2.11 将文件树归档到一个压缩的tar文件 76 2.12 将二进制数据发送到...
100 求跳远测试中出现次数最多的成绩 196 101 查询材料采购最频繁的车间 198 102 统计各个利润区间的商品数目 200 103 分别统计未完成任务和超额完成任务的人数 202 104 分别统计本科以下及本科以上学历的...
这些复杂的模式使用的正则表达式语法指定了该表达式中每个元素要重复出现的次数. 指定复制的字符总是出现在它们所作用的模式后面.由于某种复制类型相当常用.所以有一些特殊的字符专门用于表示它们.例如: +号匹配的...
《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self 20.状态栏的设置:window.status="字符"; 21.弹出...
2、 hashes:充当其它对象的容器,每个都关联一个唯一的查询名字 具有一个唯一的查询名字和他包含的每个变量相关联。 3、 sequences:充当其它对象的容器,按次序访问 使用数字和他包含的每个变量相关联。索引值...
功能:frames属性是一个数组,用来存储文档中每一个由元素创建的子窗口(框 架)实例,其中的下标即可以是次序号也可以是用FRAME元素的NAME属性指定的名 称来得到并使用。 12. frames.length属性 语法格式: ...
76 <br>0111 计算字符串中子字符串出现的次数 76 <br>0112 获得字符串中大写字母的个数 77 <br>0113 获得某字符在字符串中最后出现的位置 78 <br>0114 如何找出字符串中某一字符的所有位置 78...