2012-04-05 13 views
7

Utilizando el siguiente ejemplo, necesito filtrar la línea que contiene 'ABC' solamente, omitiendo las líneas que coinciden con 'ABC' que contiene corchetes:Necesita ayuda de RegExp para Linux Bash grep comando para filtrar las líneas que contienen corchetes

 
2012-04-04 04:13:48,760~sample1~ABC[TLE 5332.233 2/13/2032 3320392]:CAST 
2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample3~XYZ[BAC.CAD.ABC.CLONE 232511]:TEST 

Aquí es lo que tengo, pero hasta ahora no soy capaz de filtrar con éxito las líneas con corchetes:

bash-3.00$ cat Metrics.log | grep -e '[^\[\]]' | grep -i 'ABC'

Por favor ayuda?

+0

+1 para la entrada de la muestra, la explicación clara de salida deseada Y alguna muestra ¡código! Buena suerte. – shellter

Respuesta

3

Editado basado en los comentarios:

Trate grep -i 'ABC' Metrics.log | grep -v "[[]" | grep -v "ABC\w"

de entrada:

2012-04-04 04:13:48,760~sample1~ABC[TLE 5332.233 2/13/2032 3320392]:CAST 
2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample3~XYZ[BAC.CAD.ABC.CLONE 232511]:TEST 
2012-04-04 04:13:48,761~sample4~XYZ 
2012-04-04 04:13:48,761~sample5~ABCD 
2012-04-04 04:13:48,761~sample6~ABC:TEST 

Salida:

2012-04-04 04:13:48,761~sample2~ABC 
2012-04-04 04:13:48,761~sample6~ABC:TEST 
+1

Si le funciona, ¿le importaría marcar la respuesta como correcta? ¡Gracias! – GetSet

+0

nota, no hay necesidad de cat Metrics.log, simplemente suministre eso como la entrada al 1er 'grep. grep -i 'ABC' Metrics.log | grep -v "[[]" ' – matchew

+0

Gracias. Marcado como respondido. Tomado nota del gato Un caso más: necesita omitir coincidencias falsas, como ABCD, pero no ABC: PRUEBA. –

1
$cat log | grep -v '\[.*\]' | grep ABC 
+0

Esto también funciona. Gracias –

Cuestiones relacionadas