Welcome 微信登录

首页 / 操作系统 / Linux / Java模拟Linux命令grep

在网上看到Matlab模拟Linux的grep命令,就想到用java也来模拟下Linux命令grep,算法非常简单,,这里直接上代码: 
    /**
     * 模拟Unix命令grep操作,输出行号和行内容
     * @param path    待查询的文件路径
     * @param query   待查询的字符串
     * @throws IOException      * */
    public static void grep(String path,String query) throws IOException{
          int lineno=0;
          String line = null;
    
          FileReader in=new FileReader(path);
          BufferedReader br=new BufferedReader(in);
          System.out.println("所需处理的文件:"+path);
          System.out.println("行号-------------"+"包含" "+query+" "的行内容");
 
          line=br.readLine();
          while(line!=null){
               lineno++;
               if(line.indexOf(query)!=-1)
                     System.out.println(lineno+"---------------"+line);
               line=br.readLine();
          }
    }
 在junit4写测试代码如下: //@Ignore
 @Test
  public  void testGrep() throws Exception {
          String query="链接";
          String path="E:/greptest.txt";
          StringUtil.grep(path,query);
 }对于如下的测试文件greptest.txt:    Java Servlet API中forward() 与redirect()的区别
     前者仅是容器中控制权的转向,
     在客户端浏览器地址栏中不会显示出转向后的地址;
     后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
     这样,从浏览器的地址栏中可以看到跳转后的链接地址。
     所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,
     并且,这样也有助于隐藏实际的链接。在有些情况下,
     比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。得到的测试结果如下:所需处理的文件:E:/greptest.txt
行号-------------包含" 链接 "的行内容
6---------------后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
7---------------这样,从浏览器的地址栏中可以看到跳转后的链接地址。
9---------------并且,这样也有助于隐藏实际的链接。在有些情况下,