题目要求:echo “test\n\string\nfor\ngrep" |grep “string”。 这条语句将echo 后面的
字符串打印内容作为grep的输入参数,会打印输出含有string的行
用java实现了类似功能
题目分析:1.输入一个字符串取其字串
调用字符串截取函数substring(begin_index,end_index)
2.java实现grep功能,写一个Grep函数
3.将截取的字串作为参数传入Grep函数
代码:
字符串输及截取:
String pattern=null;
System.out.println("please input");
Scanner input=new Scanner(System.in);
pattern=input.nextLine();
pattern=pattern.substring(7,13);
Grep函数
public static void Grep (String pattern,String path) throws IOException //pattern为所匹配的字符串,path为文件地址
{ int number=0;//表示行数
Pattern r = Pattern.compile(pattern);
File file=new File(path);
InputStreamReader read = new InputStreamReader(new FileInputStream(file));
BufferedReader bufferedReader = new BufferedReader(read);//创建一系列类
String line = null;
System.out.println("含有string的行有:");
while ((line=bufferedReader.readLine()) != null)
{ number++;
Matcher m=r.matcher(line);
if(m.find())
{
System.out.println(number+"."+m.group());
}
}
}
完整代码
package com.company;
import java.util.Scanner;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main (String[] args)throws IOException
{ String pattern=null;
System.out.println("please input");
Scanner input=new Scanner(System.in);
pattern=input.nextLine();
pattern=pattern.substring(7,13);
Grep(pattern,"/home/zyf/桌面/string.txt");
}
public static void Grep (String pattern,String path) throws IOException
{ int number=0;
Pattern r = Pattern.compile(pattern);
File file=new File(path);
InputStreamReader read = new InputStreamReader(new FileInputStream(file));
BufferedReader bufferedReader = new BufferedReader(read);
String line = null;
System.out.println("含有string的行有:");
while ((line=bufferedReader.readLine()) != null)
{ number++;
Matcher m=r.matcher(line);
if(m.find())
{
System.out.println(number+"."+m.group());
}
}
}
}
运行结果: