1. Grepping en 1 variable
Prueba esto:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Esto se ejecutará curl
1 vez y grep para ocurrencias de string1
o string2
.
2. Grepping en 2 variables
Si son variables diferentes, cambie las tácticas ligeramente. Capture la salida de curl
y luego grep
después.
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
3. Grepping en una matriz
También puede almacenar los resultados en una matriz en lugar de variables separadas.
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
Este es un poco difícil de manejar si los resultados de grep podrían no devolver resultados, ya que los resultados de "string2" podrían ser el primer o el segundo elemento de la matriz, pero lo proporciono aquí solo como una demostración de el enfoque.
4. Leer en vars desde grep
Otro método más que hace uso del read
comando junto con la sustitución del proceso ( <( ..cmd..)
).
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
De nuevo, esto puede ser complicado si la búsqueda de "cadena1" no devuelve nada, lo que hace que aparezcan coincidencias para "cadena2" $foo1
. Además, este enfoque tiende a ser menos portátil que el n. ° 2 o n. ° 3 anterior.
En serio, amigo, hay como un millón de formas de desollar a este gato.
fuente