elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  filtrar un TXT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: filtrar un TXT  (Leído 5,306 veces)
rpk666

Desconectado Desconectado

Mensajes: 3


Ver Perfil
filtrar un TXT
« en: 14 Marzo 2011, 14:11 pm »

Hola, estoy haciendo un programa para procesar unos logs de los proxy que tengo.

lo que necesito ahora es saber como acomodar el log, para que quede mas prolijo y luego poder cargarlo en una tabla en el SQL.

este es el codigo que tengo para leer el log, pero no se como filtrarlo.

public class Main {
   
   
   public static void main(String[] args) throws IOException {
   
      File f = new File("c:/users/c319529/workspace/01032010.txt");
       BufferedReader entrada = new BufferedReader( new FileReader( f ) );
       if ( f.exists() )
         
          while ( entrada.readLine() != null){
             
             if (entrada.readLine().matches("DENIED"))
             {
                
             }else {
                System.out.println(entrada.readLine());
             }
             
          }
}
}


este codigo, me muetra por consola todo el archivo y yo necesito que las lineas que contengan TCP_DENIED las borre o no las muestre.

se le ocurre a alguien como hacerlo?

desde ya Muchas gracias!


En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: filtrar un TXT
« Respuesta #1 en: 14 Marzo 2011, 15:44 pm »

Quizás con la clase Matcher y Pattern de java.util.Regex, en caso de que sepas usar expresiones regulares, te podría ir mejor. Haces un pattern con la expresión regular, lo compilas con el método de la clase compile() creo recordar que era, luego creas un Matcher y haces match con el texto del fichero, las lineas que encuentre las puedes sustituir por la cadena vacía o por algún otro texto...en fin hay muchos métodos echales un ojo Paquete Regex Java.

Espero haberte servido de ayuda. Saludos.


En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: filtrar un TXT
« Respuesta #2 en: 14 Marzo 2011, 15:49 pm »

Sin duda, como ya han dicho la forma mas fácil y correcta de hacerlo es con regex:

http://www.programacion.com/articulo/expresiones_regulares_en_java_127

Está bastante ameno y fácil de comprender.

Un saludo
En línea

rpk666

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: filtrar un TXT
« Respuesta #3 en: 15 Marzo 2011, 21:03 pm »

señores agradezco su ayuda les dejo el codigo como quedo...

al final no use regular expresion, use una funcion que es "contains" que es de Strings.

   public void leerEInsertarEnSQL() {
      StringBuilder text = new StringBuilder();
      try {
         Scanner scanner = new Scanner(new File("/var/log/squid/access.log.0"));
         while (scanner.hasNextLine()) {
            String cadena = scanner.nextLine();
//            System.out.println(cadena);
            if(!cadena.contains("DENIED")){
            String[] campos = obtenerCampos(cadena);
//            System.out.println(campos[0]+" "+campos[2]+" "+campos[3].substring(1)+" "+campos[6]+" "+campos[9]+" "+campos[10]);
//            System.out.println(cadena);
            insertarBase(campos);
            }
         }
         scanner.close();

      } catch (Exception ex) {
         ex.toString();
      }
   }
   
   private void insertarBase(String[] campos) {
      Sql.getInstance().realizarInsert(campos);
   }

   public String[] obtenerCampos(String cadena) {
      return cadena.split("\\s");
   }
}


cualquier consulta que pueda responder, pregunten.

Saludos!
En línea

xopito

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: filtrar un TXT
« Respuesta #4 en: 26 Marzo 2011, 11:54 am »

No me he enterado bien de la estructura del fichero, pero si son varias palabras en la misma linea...¿no sería mejor hacerlo por Tokens?

por ejemplo:
nombreFichero = config.getNombreFichero();
        try {
            lectorFichero = new FileReader(nombreFichero);
        } catch (FileNotFoundException ex) {
            System.out.println("El fichero " + nombreFichero + " no ha sido encontrado");
            //Logger.getLogger(leer.class.getName()).log(Level.SEVERE, null, ex);
            return;
        }
        BufferedReader entrada;
        entrada = new BufferedReader(lectorFichero);
        //FileReader lector = new FileReader(config.getNombreFichero());
        //BufferedReader entrada = new BufferedReader(lector);
        String aux;
        String cadena;
        try {
            while ((aux = entrada.readLine()) != null) {
                if (aux.length() == 0) {
                    System.out.println("La linea esta vacia");
                } else if (aux.charAt(0) == '#') {
                    System.out.println("Es un comentario: " + aux);
                } else if (aux.charAt(0) == '@') {
                    System.out.println("Leida una linea del fichero");
                    aux = aux.substring(1);
                    aux = aux.toUpperCase();
                    tok1 = new StringTokenizer(aux);
                    cadena = tok1.nextToken();
                    if (cadena.equals("USARPIN")) {
                        nuevousarpin = tok1.nextToken();
...etc
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
filtrar un datagrid
Programación Visual Basic
farkas 4 3,234 Último mensaje 1 Noviembre 2007, 16:28 pm
por farkas
pc para filtrar web
Redes
kakashi20 1 5,407 Último mensaje 17 Febrero 2011, 09:47 am
por madpitbull_99
Filtrar Visitas Mediante javascript
Nivel Web
Putero69 9 5,527 Último mensaje 3 Mayo 2011, 04:02 am
por Putero69
filtrar correo saliente
Seguridad
iber 1 3,210 Último mensaje 29 Abril 2011, 17:28 pm
por Jeeper
Filtrar velocidad
Hacking Wireless
Stakewinner00 0 1,866 Último mensaje 1 Noviembre 2012, 22:36 pm
por Stakewinner00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines