Estou escrevendo um script bash que irá isolar uma parte de uma string e salvá-la em uma variável em um script bash. Supondo que $INSTALL_INFO
seja uma variável com o arquivo do qual desejo extrair dados, estou fazendo algo assim.
BOOST=`cat $INSTALL_INFO | grep 'BOOST:' | sed 's/BOOST://g' | sed 's/^[ \t]*//'`
Nesse caso, boost é a palavra-chave que estou procurando. O formato dos itens no arquivo é:
<possible whitespace><exact title><indeterminate whitespace><data I want><possible whitespace>
deve haver uma maneira mais limpa de fazer isso com um comando sed, mas não consegui descobrir nada.
A maneira de abordar isso é usar
sed -n
, que imprimirá apenas as linhas que correspondem à(s) expressão(ões) e uma expressão que descreva a linha inteira, mantendo apenas as partes que você deseja.O à direita
/p
informased
para imprimir a linha (após a substituição ter sido realizada).Se seus "dados que desejo" puderem conter espaços em branco, fica um pouco mais complicado. Você tem que modificar a expressão para "mastigar" o espaço em branco no final da linha. Eu mudaria para o Perl para poder usar seu modificador "relutante" (um
?
após um operador de repetição):Claro, com Perl você pode apenas imprimir a parte que corresponde ao invés de modificar a linha: