Usando sed para localizar e alterar informações no arquivo de configuração [duplicado]

0

Existe um arquivo chamado parceiro como:

abc
def
ghi

Existe outro arquivo conf como:

part=abc
var=x
var=y
id=123

part=def
var=z
id=345

e assim por diante ...

Eu estou fazendo um shellscript que lê a linha de 'partner' usando while loop, então procura o bloco que contém o nome do parceiro no arquivo conf usando sed. Depois disso, e finalmente substituindo o valor id (por exemplo: de 123 para 123_1) usando sed e armazenando o novo bloco em outro arquivo.

while read -r var || [[ -n "$var" ]]
do sed -n '/part=$var/,/^$/p' conf.cfg | xargs sed 's/id=123/id=123_1/g' >> new.txt
done

O que estou fazendo de errado? Como isso só me dá linhas vazias de texto como saída.

    
por Arjit Dixit 02.12.2016 / 14:03

1 resposta

1

Ao usar variáveis em argumentos de um comando, você não pode colocá-lo entre aspas simples.

Solução de problemas de scripts de shell, tente executar seus comandos um após o outro, ... isso ajudará a restringir seu problema.

sed -n "/part=$var/,/^$/p" conf.cfg
    
por 02.12.2016 / 14:38