Com o GNU grep
, você poderia fazer:
user=$(grep -oP "\\$user.+?'\K[^']+" file)
pass=$(grep -oP "\\$password.+?'\K[^']+" file)
O -P
ativa as Expressões Regulares Compatíveis com Perl, que nos fornecem \K
(ignore qualquer coisa correspondida até o momento). O -o
significa "imprimir apenas a parte correspondente da linha. Em seguida, procuramos $var
(precisamos de três \
, para evitar expandir a variável e evitar que o $
seja considerado como parte da regex ), uma aspa simples e um ou mais caracteres que não são '
até o próximo '
.
Como alternativa, você pode usar awk
:
user=$(awk -F"'" '/\$user/{print $2}' file)
pass=$(awk -F"'" '/\$password/{print $2}' file)
Aqui, estamos definindo o delimitador de campo para '
, então o valor da variável será o segundo campo. O comando awk
imprime o segundo campo de linhas correspondentes.