1. Grepping em 1 variável
Tente o seguinte:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Isso executará curl
1 vez e grep para ocorrências de string1
ou string2
.
2. Grepping em 2 variáveis
Se são variáveis diferentes, mude um pouco de tática. Capture a saída curl
e grep
depois.
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 de lidar, se os resultados do grep não retornarem resultados, pois os resultados de "string2" podem ser o primeiro ou o segundo item da matriz, mas estou fornecendo aqui apenas como uma demonstração de a abordagem.
4. Lendo em vars do grep
Ainda outro método que utiliza o read
comando junto com a substituição do processo ( <( ..cmd..)
).
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
Isso novamente pode ser complicado se a pesquisa por "string1" não retornar nada, fazendo com que correspondências para "string2" sejam exibidas $foo1
. Além disso, essa abordagem tende a ser menos portátil do que os itens 2 ou 3 acima.
Sério, cara, existem milhões de maneiras de esfolar esse gato.
fonte