[关键字]:java,design pattern,设计模式,《Java与模式》学习,decorator,装饰模式,Unix
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:
package pattern.decorator.grep;
import java.io.*;
/**
* 装饰模式(Decorator Pattern):Grep
*
* Grep是UNIX中的命令,
* 使用命令"grep BMW file",
* 就可以在file中找出含有BMW的行,并显示。
*
* @version 2009-6-6
* @author Winty(wintys@gmail.com)
*/
public class Grep{
public static void main(String[] args)throws Exception{
GrepView view = new GrepView();
if(args.length < 2){
view.println("Usage: java Grep targetString fileName");
view.println("e.g.:java Grep BMW C:/sample.txt");
System.exit(0);
}
GrepReader grep;
FileReader file = new FileReader(args[1]);
grep = new GrepReader(file , args[0] , view);
grep.search();
}
}
class GrepReader extends FilterReader{
private LineNumberReader reader;
private String target;
private GrepView view;
/**
*@param in 在输入流in中查找目标字符串
*@param target 要查找的目标字符串
*@param view 查找结果输出
*/
public GrepReader(Reader in , String target , GrepView view){
super(in);
reader = new LineNumberReader(in);
this.target = target;
this.view = view;
}
public void search()throws Exception{
String line = null;
while((line = reader.readLine())!=null){
int index = -1;
if((index = line.indexOf(target)) != -1){
String str;
str = "line" + reader.getLineNumber() + " column" + (index +1) +":" + line;
view.println(str);
}
}
reader.close();
}
}
class GrepView{
private PrintStream out;
public GrepView(){
this.out = System.out;
}
public void println(String str){
out.println(str);
}
}
- 大小: 55.9 KB
分享到:
相关推荐
3. **正则表达式支持**:除了简单的字符串匹配,`fs-grep`还支持正则表达式,增强了搜索的灵活性和精确性。 4. **异步处理**:考虑到前端环境的非阻塞特性,`fs-grep`采用异步方式读取和处理文件,不会阻塞UI线程。 ...
开源项目-bettinson-grep-webpage.zip,I'm a complete go beginner and I wrote a simple grep function for web pages in go. How does this look?
这个压缩包“linux-grep-命令-详解.zip”包含了一份详细文档“linux-grep-基本用法及高级技巧.doc”,将深入解析grep命令的各个方面。下面,我们将根据文档内容,对grep命令进行详细介绍。 grep,顾名思义,“g/re/...
它的基本语法是`grep [选项] 模式 [文件]`,其中选项可以设定搜索行为,如 `-i` 忽略大小写,`-v` 反向匹配,`-r` 递归搜索目录等。模式可以是简单的字符串,正则表达式,或者使用`-E`选项的扩展正则表达式。掌握...
Linux 基础 39-文件内容命令-04-grep行首/行尾的模式查找.flv
* ifconfig | grep -E '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}':从 ifconfig 命令的输出中搜索包含 IP 地址的行 * ifconfig | grep -E '([0-9]{1,3}.){3}[0-9]{1,3}':从 ifconfig 命令的输出中搜索包含 IP ...
VIM编辑器-head命令-trail命令-find命令-grep命令的介绍和说明。
`grep`命令就是这样一个强大的工具,它能帮助我们快速定位文本文件中的特定字符串或模式。本资源“Linux-系统随你玩之-grep查找文件内容-fyydlz.zip”包含了关于如何使用`grep`进行文本搜索的示例文件——fyydlz.txt...
Linux 基础 38-文件内容命令-03-grep查找文件内容.flv
`hackers-grep-master`压缩包包含了`hackers-grep`的源代码,通过阅读和学习源码,开发者可以深入理解PE文件的结构和Python处理这类文件的方法。这对于提升逆向工程和软件分析的技能非常有益。 总的来说,`hackers-...
Linux运维-操作系统 教程 从入门到精通101课-75-77三剑客-grep.mp4
在Go语言的开发环境中,有时候我们可能需要对多个文件进行搜索和查找特定的代码模式,这时,`Go-vimgrep`命令就派上了用场。它模仿了Vim编辑器中的`:vimgrep`功能,使得在代码库中进行全局搜索变得更加高效和便捷。 ...
`git grep`是Git内置的一个强大功能,用于在项目源码中搜索匹配特定模式的文本。而`x-git-grep`则将这一功能扩展到了多仓库场景,它能够同时在多个独立的Git仓库中进行全文本搜索,省去了逐个仓库操作的繁琐步骤。这...
phi-grep.el Elisp実装の编集可能な再帰grep ... phi-grep-dird-dwim 自动选择以上其中一项 在phi-grep结果缓冲区中,您还可以执行递归grep。 phi-grep-递归 当前结果文件中的grep 您可以使用[Cg]或[RET]
3. grep的正则表达式 grep支持Perl兼容的正则表达式(PCRE),可以通过正则表达式来指定复杂的搜索模式。例如: - ^:表示行的开头。 - $:表示行的结尾。 - .:匹配任何单个字符。 - *:匹配前一个字符零次或多次。...
查找可用的 JDK 版本: 执行命令 yum search java-grep jdk
grep -A 3 "UUID" /etc/fstab ``` 这将显示每个匹配行及其后的三行上下文。 **小结:** `grep`结合正则表达式的使用,为文本搜索提供了强大的功能。无论是简单还是复杂的模式匹配需求,`grep`都能轻松应对。通过...
Kubectl Grep 通过匹配名称来过滤Kubernetes资源 要求 Kubernetes 1.17.0以上 Kubectl 1.17.0+ 克鲁0.4.0+ 兼容性 请参阅和以获取支持的版本矩阵。 示例:使用Kubernetes-1.19.x构建的kubectl-grep应该与...