Dudo mucho que esto sea lo que necesita, pero esto responde palabra por palabra a su pregunta actual.
Primera parte (asumiendo GNU grep
o compatible):
project="$(yourscript|grep -oE '[[:upper:]]{3}')"
Segunda parte:
size="$(yourscript|grep -oE '[[:digit:]]+(\.[[:digit:]]+)?[MGT]')"
Combinado, es más sencillo ejecutar el script una vez, guardar la salida y grep y asignar en la salida guardada:
output="$(script)"
size="$(printf '%s\n' "$output"|grep -oE '[[:digit:]]+(\.[[:digit:]]+)?[MGT]')"
project="$(printf '%s\n' "$output"|grep -oE '[[:upper:]]{3}')"
Alguna explicación grep -o
-solo devuelve el objeto grepped, no toda la línea -E
-Expresión regular extendida [[:upper:]]
-coincide solo con letras mayúsculas ([A -Z], pero independientemente de la configuración regional){3}
-limita la coincidencia a exactamente 3 caracteres consecutivos. [[:digit:]]
-coincidencia de dígitos ([0 -9], de nuevo sin tener en cuenta la configuración regional)+
-coincide 1 o más veces \.
-coincide con un punto (...)?
-coincide 0 o 1 veces -esto asegura que los números sin un punto decimal también puedan capturarse [xy]
-coincidió exactamente con uno de los elementos x o y.