Em bash
e usando uma variável de matriz, você pode fazer algo como:
{ IFS=$'\n'; array=($(grep -Po 'name=[^-]+(?=\s*-)' infile)); }
imprima os elementos da matriz (o índice da matriz no bash começa em 0):
printf '%s\n' "${array[@]}"
name=PolicyName
name=PolicyWorkflow
name=PolicyAction
name=PolicyName
name=PolicyWorkflow
name=PolicyAction
name=Policy Name
name=PolicyWorkflow
name=PolicyAction
Ou para imprimir apenas um único elemento:
printf '%s\n' "${array[6]}"
name=Policy Name
-
Definimos
IFS
para "\n
ewline" caractereIFS=$'\n'
para que a divisão de palavras acontecerá no caractere "\n
ewline" apenas no resultado de sem aspas - Substituição de Comando$(...)
. -
A sintaxe
{ list; }
é conhecida Comandos de agrupamento e Eu costumava agrupar meus comandos. -
A sintaxe
array=(...)
é usada para criar uma matriz associada variável chamadaarray
. -
Com
grep -Po 'name=[^-]+(?=\s*-)' infile
, imprimimos-o
nly as correspondências que correspondem ao padrão"name="
seguido por qualquer tamanho diferente de zero caracteres, mas um hífen[^-]+
que segue por zero ou mais espaços em branco até um hífen(?=\s*-)
.- A sintaxe
(?=...)
é positiva-lookahead e com% do grep A opção-P
pode ser usada para interpretar o padrão como uma expressão regular compatível com Perl (PCRE) ) .
- A sintaxe
Leitura futura: