在一个文本文件中,例如:
MMON started with pid=10, OS id=5723
Tue Mar  3 18:15:49 2009
ALTER SYSTEM enable restricted session;
Tue Mar  3 18:15:49 2009
alter database "oracle" open resetlogs
MMNL started with pid=11, OS id=5725
Tue Mar  3 18:15:50 2009
RESETLOGS after incomplete recovery UNTIL CHANGE 446074
Tue Mar  3 18:15:50 2009
Errors in file /opt/oracle/admin/oracle/udump/oracle_ora_5721.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/opt/oracle/oradata/oracle/redo01.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Tue Mar  3 18:15:52 2009
Errors in file /opt/oracle/admin/oracle/udump/oracle_ora_5721.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/opt/oracle/oradata/oracle/redo02.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Tue Mar  3 18:15:53 2009
Errors in file /opt/oracle/admin/oracle/udump/oracle_ora_5721.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/oracle/redo03.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Tue Mar  3 18:15:55 2009
Setting recovery target incarnation to 2
Tue Mar  3 18:15:55 2009
Assigning activation ID 1553627283 (0x5c9a7893)
Thread 1 opened at log sequence 1
  Current log# 3 seq# 1 mem# 0: /opt/oracle/oradata/oracle/redo03.log
Successful open of redo thread 1
Tue Mar  3 18:15:55 2009
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Tue Mar  3 18:15:55 2009
SMON: enabling cache recovery
Tue Mar  3 18:15:59 2009
Successfully onlined Undo Tablespace 1.要求检索ora-的内容,并将此关键字的时间点提取出来Tue Mar  3 18:15:50 2009
生成一个新的文本文件

解决方案 »

  1.   

    哪有什么时间点啊
    ORA-00313: open failed for members of log group 1 of thread 1 
    ORA-00312: online log 1 thread 1: '/opt/oracle/oradata/oracle/redo01.log' 
    ORA-27037: unable to obtain file status ORA-00313: open failed for members of log group 2 of thread 1 
    ORA-00312: online log 2 thread 1: '/opt/oracle/oradata/oracle/redo02.log' 
    ORA-27037: unable to obtain file status ORA-00313: open failed for members of log group 3 of thread 1 
    ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/oracle/redo03.log' 
    ORA-27037: unable to obtain file status 你是想提取冒号后面那一行字吗?
      

  2.   

    是ora上面的时间呢
    Tue Mar  3 18:15:53 2009 
    看到了吧
      

  3.   

    不知道是否是楼主想要的结果
    /**
     * 从一个文本文件中读入字符串,然后把该字符串写入另一个文本中
     */package practice;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexFile {
    private String fileName = "e:\\test.txt"; //要读的文件
    private String date;

    //读文件
    public void readFile() {
    Pattern p = Pattern
    .compile("\\w*[ *]\\w*.*\\d[ *]\\d{2}[:]\\d{2}[:]\\d{2}[ *]\\d{4}"); //匹配格式形如X X  X X:XX:XX XXXX的正则表达式
    BufferedReader reader = null; try {
    reader = new BufferedReader(new FileReader(fileName));
    String line = null;
    while ((line = reader.readLine()) != null) {
    Matcher m = p.matcher(line);
    if (m.find()) {
    date = m.group();
    }
    }
    System.out.println(date);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (reader != null)
    try {
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

    //写文件
    public void writeTxt() {
    File file = new File("E:\\test2.txt"); //要写入的文件
    BufferedWriter writer = null;
    try {
    if (!file.exists())
    file.createNewFile(); writer = new BufferedWriter(new FileWriter(file));
    writer.write(date);
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (writer != null)
    try {
    writer.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } public static void main(String[] args) {
    RegexFile regexFile = new RegexFile();
    regexFile.readFile();
    regexFile.writeTxt();
    }
    }
      

  4.   

    那个格式不好看,插入代码格式~~
    /**
     * 从一个文本文件中读入字符串,然后把该字符串写入另一个文本中
     */package practice;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexFile {
    private String fileName = "e:\\test.txt"; //要读的文件
    private String date;

    //读文件
    public void readFile() {
    Pattern p = Pattern
    .compile("\\w*[ *]\\w*.*\\d[ *]\\d{2}[:]\\d{2}[:]\\d{2}[ *]\\d{4}"); //匹配格式形如X X  X X:XX:XX XXXX的正则表达式
    BufferedReader reader = null; try {
    reader = new BufferedReader(new FileReader(fileName));
    String line = null;
    while ((line = reader.readLine()) != null) {
    Matcher m = p.matcher(line);
    if (m.find()) {
    date = m.group();
    }
    }
    System.out.println(date);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (reader != null)
    try {
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

    //写文件
    public void writeTxt() {
    File file = new File("E:\\test2.txt"); //要写入的文件
    BufferedWriter writer = null;
    try {
    if (!file.exists())
    file.createNewFile(); writer = new BufferedWriter(new FileWriter(file));
    writer.write(date);
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (writer != null)
    try {
    writer.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } public static void main(String[] args) {
    RegexFile regexFile = new RegexFile();
    regexFile.readFile();
    regexFile.writeTxt();
    }
    }
      

  5.   


    /**
     * 从一个文本文件中读入字符串,然后把该字符串写入另一个文本中
     */package practice;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexFile {
        private String fileName = "e:\\test.txt";        //要读的文件
        private String date;
        
        //读文件
        public void readFile() {
            Pattern p = Pattern
                    .compile("\\w*[ *]\\w*.*\\d[ *]\\d{2}[:]\\d{2}[:]\\d{2}[ *]\\d{4}");        //匹配格式形如X X  X X:XX:XX XXXX的正则表达式
            BufferedReader reader = null;        try {
                reader = new BufferedReader(new FileReader(fileName));
                String line = null;
                while ((line = reader.readLine()) != null) {
                    Matcher m = p.matcher(line);
                    if (m.find()) {
                        date = m.group();
                    }
                }
                System.out.println(date);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (reader != null)
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }
        }
        
        //写文件
        public void writeTxt() {
            File file = new File("E:\\test2.txt");    //要写入的文件
            BufferedWriter writer = null;
            try {
                if (!file.exists())
                    file.createNewFile();            writer = new BufferedWriter(new FileWriter(file));
                writer.write(date);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (writer != null)
                    try {
                        writer.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }
        }    public static void main(String[] args) {
            RegexFile regexFile = new RegexFile();
            regexFile.readFile();
            regexFile.writeTxt();
        }
    }顶……
      

  6.   

    实现了主体的功能,但是还有一些细节。从这个文中
    MMON started with pid=10, OS id=5723 
    Tue Mar  3 18:15:49 2009 
    ALTER SYSTEM enable restricted session; 
    Tue Mar  3 18:15:49 2009 
    alter database "oracle" open resetlogs 
    MMNL started with pid=11, OS id=5725 
    Tue Mar  3 18:15:50 2009 
    RESETLOGS after incomplete recovery UNTIL CHANGE 446074 
    Tue Mar  3 18:15:50 2009 
    Errors in file /opt/oracle/admin/oracle/udump/oracle_ora_5721.trc: 
    ORA-00313: open failed for members of log group 1 of thread 1 
    ORA-00312: online log 1 thread 1: '/opt/oracle/oradata/oracle/redo01.log' 
    ORA-27037: unable to obtain file status 
    Linux Error: 2: No such file or directory 

    Additional information: 3 
    Tue Mar  3 18:15:52 2009 
    Errors in file /opt/oracle/admin/oracle/udump/oracle_ora_5721.trc: 
    ORA-00313: open failed for members of log group 2 of thread 1 
    ORA-00312: online log 2 thread 1: '/opt/oracle/oradata/oracle/redo02.log' 
    ORA-27037: unable to obtain file status 
    Linux Error: 2: No such file or directory 

    Additional information: 3 
    Tue Mar  3 18:15:53 2009 
    Errors in file /opt/oracle/admin/oracle/udump/oracle_ora_5721.trc: 
    ORA-00313: open failed for members of log group 3 of thread 1 
    ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/oracle/redo03.log' 
    ORA-27037: unable to obtain file status 
    Linux Error: 2: No such file or directory 

    Additional information: 3 
    Tue Mar  3 18:15:55 2009 
    Setting recovery target incarnation to 2 
    Tue Mar  3 18:15:55 2009 
    Assigning activation ID 1553627283 (0x5c9a7893) 
    Thread 1 opened at log sequence 1 
      Current log# 3 seq# 1 mem# 0: /opt/oracle/oradata/oracle/redo03.log 
    Successful open of redo thread 1 
    Tue Mar  3 18:15:55 2009 
    MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set 
    Tue Mar  3 18:15:55 2009 
    SMON: enabling cache recovery 
    Tue Mar  3 18:15:59 2009 
    Successfully onlined Undo Tablespace 1. 检索出的结果应该是这样的,也就是说
    程序要先查出ora-(不区分大小写),然后找出ora-上面的日期时间那一行,
    再找出连续的ora-下的error作为结束行,如果没有,结束行则为连续的最后
    一个ora-。我用红色的标出,作为检索结果。
      

  7.   

      顶,又回顾了文件操作与java正则表达式的操作。