Tengo una línea de algún archivo como este:
attempting to create a 512^3 level (with Dirichlet BC) using a 16^3 grid of 32^3 boxes and 800 tasks...
Quiero extraer el 512^3, 16^3, 32^3y 800cuatro números de ello y asignarlos respectivamente a cuatro variables level, grid, boxesy taskspara otros usos.
¿Cómo puedo hacer esto?
bash
regular-expression
string
Yulong Ao
fuente
fuente

Respuestas:
Bash puede hacer coincidir expresiones regulares con el
=~operador en[[ ... ]]:fuente
[[ 'Example 123' =~ '([0-9]+)' ]]es falso, pero[[ 'Example 123' =~ ([0-9]+) ]]funciona según lo previsto.[[ '1_2_3' =~ ([0-9]) ]] && echo ${BASH_REMATCH[@]}solo coincide1.Usando awk:
fuente
Si esto es resultado de un programa / script que ha escrito y el texto es formulado (es decir, sigue este patrón exactamente), puede usarlo
cut.fuente
Si la línea siempre tiene exactamente esta estructura,
readpuede hacer esto en una sola línea sin procesos externos:(también usando una herejía ). Esto guardará todas las palabras que no le interesan
x(para ser ignoradas) y los valores que desea en sus respectivas variables.fuente