como procesar archivos en linux

Iniciado por elvehe, 20 Abril 2015, 20:59 PM

0 Miembros y 1 Visitante están viendo este tema.

elvehe

mi pregunta es: ¿Como leer archivos de bitacora del servidor que se en encuentran en /bitacora/graficas?
El problemas es que son muchos archivos y necesito acer varios programas en el que debo de procesar cada linea.(por ejemplo las Ip en cierto rango sin repetirse).
Entonces al ejecutar mi bash tarda demasiado.
Si hay alguna forma de recorrer todos estos archivos mas rapido quisiera saberlo.

Por ejemplo uno de lo programas :
buscar la cantidad de macs x dia sin repetirse que han accesado al servidor

engel lex

exactamente cómo es el asunto?

que es lo que lo hace lento?

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

daryo

intenta con python u si quieres mas velocidad c/c++ u  otro lenguaje
buenas

explorer

Si pones un ejemplo pequeño de lo que quieres hacer, te damos la solución  ;)

elvehe

#4
En este programa busco la cantidad de macs x dia sin repetirse que han accesado al servidor.
el codigo es el siguiente
(creo que es lento por la cantidad de archivos que leo linea por linea)

....
for dia in `ls /bitacora/graficas/salida.$horaConAno-$mes-* | cut -d"." -f2 | cut -d"-" -f3`
do  
` > archivoDeMacsDiferentes`
cantMacsDife=0
for hora in `ls /bitacora/graficas/salida.*_$ano-$mes-$dia | cut -d"." -f2 | cut -d"_" -f1`  
do
  archivoDeBitacora="/bitacora/graficas/salida."$hora"_"$ano"-"$mes"-"$dia

  while read line
  do    
      mac=`echo $line | cut -d" " -f2`        
      macEnArchivodifeDeMacs=`cat archivoDeMacsDiferentes | grep $mac`
          #echo $mac"="$macEnArchivodifeDeMacs "fecfa:"$hora
      if [ -z $macEnArchivodifeDeMacs ]; then #si no existe lo agrego
           cantMacsDife=`expr $cantMacsDife + 1 `
                `echo $mac>>archivoDeMacsDiferentes`
      fi
  done<$archivoDeBitacora
done
echo "dia:"$dia",TotalPcDiferentes:"$cantMacsDife
done

explorer

¿Puedes publicar un ejemplo, unas pocas líneas, de cómo son los archivos de entrada?

Falsea los datos sensibles, como los de las MAC. Solo nos interesa el formato del archivo.