Java Grep

[java]import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.FileReader;
import java.io.FileNotFoundException;

public class Grep {
public static void error(String msg) {
System.err.println(msg);
System.exit(1);
}

public static void main(String[] args) {
BufferedReader input;
Matcher matcher;
Pattern pattern;
String line;

switch (args.length) {
case 1:
input = new BufferedReader(new InputStreamReader(System.in));
break;
case 2:
try {
input = new BufferedReader(new FileReader(args[1]));
} catch (FileNotFoundException e) {
input = null; // silly java
error(“Error: ” + args[1] + “: ” + e.getMessage());
}
break;
default:
input = null; // silly java
error(“Usage: java Grep PATTERN [file]“);
}

pattern = Pattern.compile(“.*” + args[0] + “.*”);

try {
while ((line = input.readLine()) != null) {
matcher = pattern.matcher(line);
if (matcher.matches()) {
System.out.println(line);
}
}
} catch (IOException e) {
error(“Error parsing input: ” + e.getMessage());
}
}
}[/java]