|
From: | Fernando Mercês |
Subject: | Re: [shell-script-pt] Replicar string |
Date: | Fri, 6 May 2022 16:16:36 +0000 |
Bom dia! Com o sed, você pode montar uma regex num grupo de captura (com os parênteses) que exclua o separador de campos, que no seu caso é o ponto-e-vírgula, mas colocá-lo no fim da regex, pra substituir
só o primeiro campo: | sed 's/Password=\([^;]*\);/Password=SENHA;/' Aí é só adaptar para o Host e outros campos que quiser, caso queira fazer um por um, ou até fazer tudo numa só chamada ao sed, separando as expressões por ponto-e-vírgula também (não confundir
com o ponto-e-vírgula que é o separador de campos na sua string): | sed 's/Password=\([^;]*\);/Password=SENHA;/; s/Host=\([^;]*\);/Host=HOST;/' Uma outra opção seria ler o scampos separados por ponto-e-vírgula e trabalhar neles à vontade num loop: % while IFS=\; read -r id senha host porta banco; do # aqui vc vai ter $id meio zoado porque vai ter o “"DBHost":
junto, mas é só tirar # vai ter também $senha, $host, $porta e $banco # aí é só fazer as substituições que quiser e depois echoar (perdão pelo neologismo) uma string com os campos separados por ponto-e-vírgula done < SEUARQUIVO.TXT E certamente há outras opções. :) Abraço, Fernando From:
shell-script-pt <shell-script-pt-bounces+nandu88=gmail.com@nongnu.org> on behalf of Eldimar Souza <eldimax@gmail.com> Bom dia, pessoal. espero que estejam todos bem. Gostaria de trocar uma string de conexão em um arquivo porém não estou obtendo sucesso, pois minhas tentativas acrescentam a linha junto a string existente ou nada acontece,. As linhas seriam como no exemplo abaixo: Substituir isso "DBHost": "User ID=umacois_aqulquer;Password=hsun49wdl0P;Host=qualquer-hos-jsbr.com.br;Port=7654;Database=qualquerdatabase;" Obs: a string contém espaços, caracteres especiais na senha e números e letras no host -- ºvº "Software Livre: não é pelo dinheiro. /( _ )\ É uma questão de consciência." ^ ^ |
[Prev in Thread] | Current Thread | [Next in Thread] |