msoliver
(usa Debian)
Enviado em 23/08/2022 - 22:28h
jorgessn escreveu:
Oliver, desculpe a demora, as vezes minha vida fica muito atribulada.
Esse comando deu quase certo:
$gawk=`sudo -u root gawk -i inplace -F":" '{OFS=":";if(NR==4) $4="textoalterado";print}' Arquivo.txt;
Porém Oliver, em vez de apagar a 4 coluna e escrever o textoalterado por cima na coluna 4 no arquivo ele só escreve o textoalterado e o nome que estava antes na coluna 4 fica lá ainda criando a quinta coluna e isso nao pode. Quero que ele apague a palavra da linha 4 coluna 4 e escreva o textoalterado do input por cima mantendo só a coluna 4 com o textoalterado. Além de não apagar a palavra da 4 coluna ele adiciona tres vezes o caracter dois pontos e fica assim a coluna 4. Note que ele nao apagou a palavra antiga joao e adicionou a quinta coluna com a palavra :::textoalterado.
Arquivo.txt
[usuario1]
shell = /bin/shels/
group = /etc/group
name= joao :::textoalterado
Mais uma vez minha gratidão amigo Oliver!
Boa noite Jorge, demorou bastante, quase 1 mês :)
No comando do exemplo, usei ":" como separador de campos,
No seu arquivo, o separador é o "="
Para evitar problemas, trocaremos a linha inteira, o registro 4.
cat arq.txt
[usuario1]
shell=/bin/shels/
group=/etc/group
name=nameserver
----------------------------------------------------------------------------------------------
name="Jorge Santos";
-----------------------------------------------------------------------------------------------
gawk -v nome="${name}" '{if(NR==4)$0="name="nome"";print}' arq.txt
[usuario1]
shell=/bin/shels/
group=/etc/group
name=Jorge Santos
----------------------------------------------------------------------------------------------------
gawk -i inplace -v nome="${name}" '{if(NR==4)$0="name="nome"";print}' arq.txt
----------------------------------------------------------------------------------------------------
Mais prático com o sed:
sed -i "/^name=nameserver$/s/=.*$/=${name}/" arq.txt
Ou
sed -ri "/^name=nameserver/s/[a-z]+$/${name}/" arq.txt
É isso....
______________________________________________________________________
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
______________________________________________________________________