Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/03/2016, 08:50
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: script bash parsear string

El manejo de cadenas en SHELL es bastante limitado, como podrás ver. Si tu script es complicado, harías mejor en escribirlo con Perl o Python.

Dicho eso, esto se puede hacer de muchas maneras (awk, cut, sed, e incluso subcadenas con bash), pero ya que empezaste usando sed, hagámoslo con sed:

VALORES=( $(sed 's/^.*bb:\([0-9]*\) KB cc:\([0-9]*\) KB.*$/\1 \2/' fichero.log) )
variableB=${VALORES[0]}
variableC=${VALORES[1]}

más allá de los paréntesis escapados \) y \(, lo que le pedimos a sed es que busque bb: seguido de números, la cadena literal " KB", y luego lo mismo con cc.

Esto mismo se puede hacer con:
- grep, y el modificador -o
- awk, usando el modificador -F que admite varios caracteres como delimitadores de campos
- cut, aunque deberías usar varios encadenados

Como comentario adicional: si el archivo es grande o hay muchas líneas para procesar, hacer un grep en el archivo para filtrar las líneas que te interesan suele ser más rápido que filtrarlas directamente con sed o awk.


Saludos.