1. Grepping em 1 variável
Tente isto:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Isso executará curl
1 hora e grep para ocorrências de string1
ou string2
.
2. Entrando em 2 variáveis
Se forem variáveis diferentes, mude ligeiramente de tática. Capture a saída de curl
e depois grep
.
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
3. Grepping em uma matriz
Você também pode armazenar os resultados em uma matriz em vez de variáveis separadas.
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
Este é um pouco complicado se os resultados do grep não retornarem resultados, já que os resultados de "string2" podem ser o primeiro ou o segundo item da matriz, mas estou fornecendo aqui da mesma forma que uma demonstração da abordagem.
4. Lendo em vars do grep
Ainda outro método que faz uso do comando read
junto com a substituição do processo ( <( ..cmd..)
).
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
Novamente, isso pode ser complicado se a pesquisa por "string1" não retornar nada, fazendo com que as correspondências de "string2" apareçam em $foo1
. Além disso, esta abordagem tende a ser menos portável do que os números 2 ou 3 acima.