Acrescentar string em um arquivos depois de outra string [RESOLVIDO]

1. Acrescentar string em um arquivos depois de outra string [RESOLVIDO]

Francisco Jarbas Teixeira Matos
thelinux

(usa Fedora)

Enviado em 08/10/2021 - 16:23h

Olá pessoal, tudo bem? Desde de já obrigado pela ajuda.
Tenho um index.xml em 300 servidores. Preciso acrescentar nos 300 uma string depois de outra string. Tem como fazer isso?

Exemplo da posição da string no arquivo:
Dnome.instancia=linux1
Preciso inserir essa string -Xgc:java
Resultado final tem que ser assim: Dnome.instancia=linux1 Xgc:java



  


2. Re: Acrescentar string em um arquivos depois de outra string

Amarildo Sertório dos Santos
amarildosertorio

(usa Fedora)

Enviado em 08/10/2021 - 16:38h

thelinux escreveu:

Olá pessoal, tudo bem? Desde de já obrigado pela ajuda.
Tenho um index.xml em 300 servidores. Preciso acrescentar nos 300 uma string depois de outra string. Tem como fazer isso?

Exemplo da posição da string no arquivo:
Dnome.instancia=linux1
Preciso inserir essa string -Xgc:java
Resultado final tem que ser assim: Dnome.instancia=linux1 Xgc:java


sed -i "s|Dnome.instancia=linux1|Dnome.instancia=linux1 Xgc:java|g" index.xml 

Se o arquivo "index.xml" é igual no seus 300 servidores, seria mais interessante atualizar o arquivo e fazer um scp, não?


3. Re: Acrescentar string em um arquivos depois de outra string [RESOLVIDO]

Amarildo Sertório dos Santos
amarildosertorio

(usa Fedora)

Enviado em 08/10/2021 - 16:45h

O que seria realmente interessante com essa quantidade de servidores são soluções como o Puppet, Ansible, Terraform...



4. Re: Acrescentar string em um arquivos depois de outra string [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/10/2021 - 16:57h

Segue:
sed -i '/^Dnome.instancia=linux1$/s/$/ Xgc:java/' index.xml
Como funciona:
Na linha que casa com: "^Dnome.instancia=linux1$" => /^Dnome.instancia=linux1$/
Coloque " Xgc:jav" no final => s/$/ Xgc:java/


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: Acrescentar string em um arquivos depois de outra string

Amarildo Sertório dos Santos
amarildosertorio

(usa Fedora)

Enviado em 08/10/2021 - 17:02h

Um exemplo para execução imediata:

$ cat listservers.txt
webapplp01
webapplp02
webapplp03
for i in $(cat listservers.txt); do sshpass -p SENHASSH  ssh -o LogLevel=ERROR [email protected]$i 'printf "%s\n" "$(hostname) => $(sed -i "s|Dnome.instancia=linux1|Dnome.instancia=linux1 Xgc:java|g" /dir/index.xml)"'; done 




6. o nome do servidor muda

Francisco Jarbas Teixeira Matos
thelinux

(usa Fedora)

Enviado em 08/10/2021 - 17:50h

Obrigado pelas respostas,

O nome do servidor sempre será diferente na linha Dnome.instancia=linux1|Dnome.instancia=linuxXXX e o que será acrescentado é -Xgc:java.

Obrigado.



7. Re: Acrescentar string em um arquivos depois de outra string [RESOLVIDO]

Amarildo Sertório dos Santos
amarildosertorio

(usa Fedora)

Enviado em 08/10/2021 - 18:23h


thelinux escreveu:

Obrigado pelas respostas,

O nome do servidor sempre será diferente na linha Dnome.instancia=linux1|Dnome.instancia=linuxXXX e o que será acrescentado é -Xgc:java.

Obrigado.


Aproveitando o sed postado pelo amigo @msoliver

Diga-se de passagem, bem mais elegante!

sed -i '/^Dnome.instancia=linux.*$/s/$/ -Xgc:java/' index.xml


8. o nome do servidor muda

Francisco Jarbas Teixeira Matos
thelinux

(usa Fedora)

Enviado em 08/10/2021 - 18:44h

Desta forma já funciona perfeito, mas para um servidor.

sed -i "s|Dnome.instancia=linux001|Dnome.instancia=linux001 -Xgc:java1|g" index.html

Só informando que o Dnome.instancia=linux001 está no meio de um arquivo xml com muitas informações. Não está nem no início e nem no final da linha.

Tentei segui os comandos abaixo, mas não funcionou.

sed -i '/^Dnome.instancia=linux.*$/s/$/ -Xgc:java/' index.xml

VAR=$(grep "Dnome.instancia=" index.xml)
sed -i "s|$VAR|$VAR -Xgc:java|g" index.xml

Sei que é barberragem minha. Sou bem novato nisso de scritp e com sed nem se fala. Obrigado.


9. Re: Acrescentar string em um arquivos depois de outra string [RESOLVIDO]

Amarildo Sertório dos Santos
amarildosertorio

(usa Fedora)

Enviado em 08/10/2021 - 20:17h





10. acrescenta string em um arquivo depois de outra string

Francisco Jarbas Teixeira Matos
thelinux

(usa Fedora)

Enviado em 08/10/2021 - 22:53h


1VAR=$(grep Dnome.instancia= index.xml | cut -d " " -f2)
grep: index.xml: No such file or directory
ai tentei assim:
2VAR=$'(grep Dnome.instancia= index.xml | cut -d " " -f2)'
[[email protected]$ echo $VAR
(grep Dnome.instancia= index.xml | cut -d " " -f2)-> não é o esprado
3[[email protected]$ VAR=$'(grep Dnome.instancia=' index.xml | cut -d " " -f2)
VAR=$'(grep Dnome.instancia= index.xml' | cut -d " " -f2)
bash: syntax error near unexpected token `)

Sei que falta pouco,mas vou conseguir. Obrigado pela ajuda.


11. Re: Acrescentar string em um arquivos depois de outra string

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/10/2021 - 23:21h

thelinux, poste o padrão da linha...
o que tem antes e depois de "Dnome.instancia=linuxXXXX"
A solução é usar "retrovisores" no sed.
---------------------------------------------------
Exemplo:
cat texto:
momo Dnome.instancia=linux8790 momo
momo Dnome.instancia=linux15951 momo
momo Dnome.instancia=linux886 momo
momo Dnome.instancia=linux16328 momo
momo Dnome.instancia=linux279 momo
momo Dnome.instancia=linux20307 momo
sed -r 's/(Dnome.instancia=linux[0-9]+)/\1 TEXTO_INSERIDO/' 

momo Dnome.instancia=linux8790 TEXTO_INSERIDO momo
momo Dnome.instancia=linux15951 TEXTO_INSERIDO momo
momo Dnome.instancia=linux886 TEXTO_INSERIDO momo
momo Dnome.instancia=linux16328 TEXTO_INSERIDO momo
momo Dnome.instancia=linux279 TEXTO_INSERIDO momo
momo Dnome.instancia=linux20307 TEXTO_INSERIDO momo

Nem precisa do "padrão", casei só o necessário e incluo o TEXTO após....
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



12. acrescenta string em um arquivo depois de outra string

Francisco Jarbas Teixeira Matos
thelinux

(usa Fedora)

Enviado em 08/10/2021 - 23:39h

opa msoliver

O index.xml é bem grande: mas o trecho é este:
-Djava.io.tmpdir=/opt/jboss/temp/ -Dnome.instancia=servidor1 -disableJIT false

aí quero que fique assim:
-Djava.io.tmpdir=/opt/jboss/temp/ -Dnome.instancia=servidor1 -Xgc:java -disableJIT false

Isso dando certo. Aí vou partir para os 300 servidores. Organizar o script primeiro.

Muito obrigado.





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts