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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BASH] Borrar línea justo después del segundo ":". Análisis de log.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BASH] Borrar línea justo después del segundo ":". Análisis de log.  (Leído 3,567 veces)
garrulis

Desconectado Desconectado

Mensajes: 4


Ver Perfil
[BASH] Borrar línea justo después del segundo ":". Análisis de log.
« en: 30 Enero 2013, 19:32 pm »

No sabia si ponerlo aquí o en linux.

Bueno os cuento (como diría el guardián de las estrellas hahaha):

Vereis, estoy haciendo un análisis de logs.

Después de usar grep y cut, ya tengo todo el log casi limpito.

El problama me viene en lo siguiente.

Tengo el fichero de log, y necesito borrar (linea a linea, esto es importante) todo lo que haya a partir del segundo ":"

Ejemplo:

linea 1:
pericodelospalotes : pepitogrillo:larala

linea 2:
pericodelospalotesejemplo : pepitogrilloejemplo:larala

Deberia de quedar:

pericodelospalotes : pepitogrillo
pericodelospalotesejemplo : pepitogrilloejemplo



:larala fuera


¿Sabeis como leches se hacia?

Se que con awk se podia hacer, pero estoy bastante espeso. He buscado en google y en los apuntes que tenía de linux y no me aclaro y me urge :(

Muchas gracias!!





« Última modificación: 30 Enero 2013, 21:23 pm por EleKtro H@cker » En línea

fary


Desconectado Desconectado

Mensajes: 1.075



Ver Perfil WWW
Re: [BASH] Borrar línea justo después del segundo ":". Análisis de log.
« Respuesta #1 en: 30 Enero 2013, 21:41 pm »

Pues hombre, obviamente con un script se puede hacer jeje pero para que quieres quitar en todas las lineas lo que va despues del segundo punto? y si lo que va despues en algun caso es un parametro importante?. Te recomiendo que lo vallas haciendo tu a mano y que envez de borrar información la vallas poniendo como comentario o bien crees un archivo de respaldo por si lo rompes  :rolleyes:

un saludo!


En línea

Un byte a la izquierda.
-Myx-

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: [BASH] Borrar línea justo después del segundo ":". Análisis de log.
« Respuesta #2 en: 30 Enero 2013, 22:58 pm »

Código
  1. $ cat /etc/passwd | cut -f1,2 -d':'
  2. $ cat /etc/passwd | awk -F': ' '{print $1":"$2;}'
  3. # Y si lo que necesitas son mas de un caracter de delimitador cambia a -F' : '
« Última modificación: 30 Enero 2013, 23:00 pm por -Myx- » En línea

garrulis

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [BASH] Borrar línea justo después del segundo ":". Análisis de log.
« Respuesta #3 en: 30 Enero 2013, 23:14 pm »

Muchas gracias -MyX- lo voy a probar y te comento a ver que tal me ha ido.

Exacto mDrinky, eso es, en todas las lineas, lo que va después del segundo ":", tengo que quitarlo.

A mano me pueden dar las uvas, y ni me acoradaba usando awk.

Lo pruebo a ver que tal.

Muchas gracias de nuevo.
En línea

garrulis

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [BASH] Borrar línea justo después del segundo ":". Análisis de log.
« Respuesta #4 en: 30 Enero 2013, 23:37 pm »

-MyX- con

Código:
cat /etc/passwd | awk -F': ' '{print $1":"$2;}'

No funciona.

Con el "cut" parece ser que sí.
En línea

garrulis

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [BASH] Borrar línea justo después del segundo ":". Análisis de log.
« Respuesta #5 en: 31 Enero 2013, 11:40 am »

Hola muchachos, me ha servido perfectamente.

Ahora el problema me viene, que no todas las lineas cumplen con esa condición

las lineas pares en el punto número 9 y en las impares es en el punto numero 8.

Si hago las lineas pares, no hay problema. El problema es con las impares, ya que al ser 8, me machaca más de la cuenta.

Un ejemplo:

1:2:3:4:5:6:7:8:9

Queda:

1:2:3:4:5:6:7:8


Hasta ahí todo bien. Pero cuando hago un:

Código:
cat fichero | cut -f1,2,3,4,5,6,7,8 -d':'

Me borra a partir del punto 8 hacia adelante (pero en todas las lineas, no en las impares, por lo cual no me sirve del todo).


Ahora, la pregunta del millón....

¿Hay alguna manera de decirle al "cut" que solamente haga "cut" en las lineas donde contenga la palabra "impar" y que a partir de ahí, solo donde vea la palabra "impar", haga el cut?

Muchas gracias!

En línea

-Myx-

Desconectado Desconectado

Mensajes: 39



Ver Perfil
Re: [BASH] Borrar línea justo después del segundo ":". Análisis de log.
« Respuesta #6 en: 31 Enero 2013, 15:19 pm »

Código
  1. cat file | ... | while read line;do
  2.    impar="impar"
  3.    if grep -q $impar; then
  4.        echo $line | cut -f1,2,3 -d':'
  5.    else
  6.        echo $line | cut -f1,2,3,4 -d':'
  7.    fi
  8. done
« Última modificación: 31 Enero 2013, 20:54 pm por -Myx- » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines