Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário [

1. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário [

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 21/07/2022 - 22:41h

Boa noite. Gostaria que quando eu inserir uma palavra no input do formulário ela vá pra linha4 da coluna 4 do arquivo.txt.
Agradeço muito desde ja a ajuda!


  


2. MELHOR RESPOSTA

Marcelo Oliver
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
______________________________________________________________________


3. Re: Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulári

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/07/2022 - 00:34h

jorgessn escreveu:

Boa noite. Gostaria que quando eu inserir uma palavra no input do formulário ela vá pra linha4 da coluna 4 do arquivo.txt.
Agradeço muito desde ja a ajuda!

Boa noite Jorge,
Segue sugestão para alterar o arquivo.
cat texto.txt
Lin01_Col01:Lin01_Col02:Lin01_Col03:Lin01_Col04:Lin01_Col05:Lin01_Col06:
Lin02_Col01:Lin02_Col02:Lin02_Col03:Lin02_Col04:Lin02_Col05:Lin02_Col06:
Lin03_Col01:Lin03_Col02:Lin03_Col03:Lin03_Col04:Lin03_Col05:Lin03_Col06:
Lin04_Col01:Lin04_Col02:Lin04_Col03:Lin04_Col04:Lin04_Col05:Lin04_Col06:
Lin05_Col01:Lin05_Col02:Lin05_Col03:Lin05_Col04:Lin05_Col05:Lin05_Col06:
Lin06_Col01:Lin06_Col02:Lin06_Col03:Lin06_Col04:Lin06_Col05:Lin06_Col06:
Lin07_Col01:Lin07_Col02:Lin07_Col03:Lin07_Col04:Lin07_Col05:Lin07_Col06:
Lin08_Col01:Lin08_Col02:Lin08_Col03:Lin08_Col04:Lin08_Col05:Lin08_Col06:
Lin09_Col01:Lin09_Col02:Lin09_Col03:Lin09_Col04:Lin09_Col05:Lin09_Col06:
Lin10_Col01:Lin10_Col02:Lin10_Col03:Lin10_Col04:Lin10_Col05:Lin10_Col06:

Com sed:

Obs.: Usei o separador como referência.
sed -ri '4s/[[:alnum:]_]+:/txtalterado:/4' texto.txt

"GAWK"
gawk -i inplace -F":" '{OFS=":";if(NR==4) $4="TxtALTERADO";print}' texto.txt 


______________________________________________________________________
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
______________________________________________________________________



4. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 26/07/2022 - 00:57h

Sempre Oliver, gratidao pelo seu esforço em me ajudar amigo.

O arquivo que tenho é esse:
Arquivo.txt
[usuario1]
shell = /bin/shels/ %d
group = /etc/group
name = nameserver

Eu quero que quando de o submit no formulário eu armazeno o campo do <input name="NomeDeRede"> na variavel $NomeDeRede=$_POST["NomeDeRede"];
if(isset($_POST["submit"]))
{
$NomeDeRede=$_POST["NomeDeRede"];
$comando=`sudo -u root gawk -i inplace -F":" '{OFS=":";if(NR==4) $4="$NomeDeRede";print}' /etc/arquivo.txt`;
echo "$NomeDeRede foi gravado com sucesso!";
}
?>

Eu gostaria que a terceira coluna da linha4 onde esta name = nameserver seja trocada pela variavel do formulario. se eu digitar no formulario joao eu gostaria que o arquivo txt onde ta name = nameserver ficasse:

name = joao





5. Re: Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulári

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/07/2022 - 18:07h

jorgessn escreveu:

Sempre Oliver, gratidao pelo seu esforço em me ajudar amigo.

O arquivo que tenho é esse:
Arquivo.txt
[usuario1]
shell = /bin/shels/ %d
group = /etc/group
name = nameserver

Eu quero que quando de o submit no formulário eu armazeno o campo do <input name="NomeDeRede"> na variavel $NomeDeRede=$_POST["NomeDeRede"];
if(isset($_POST["submit"]))
{
$NomeDeRede=$_POST["NomeDeRede"];
$comando=`sudo -u root gawk -i inplace -F":" '{OFS=":";if(NR==4) $4="$NomeDeRede";print}' /etc/arquivo.txt`;
echo "$NomeDeRede foi gravado com sucesso!";
}
?>

Eu gostaria que a terceira coluna da linha4 onde esta name = nameserver seja trocada pela variavel do formulario.
se eu digitar no formulario joao eu gostaria que o arquivo txt onde ta name = nameserver ficasse:
name = joao


Boa tarde Jorge.
Essa parte do NomeDeRede, foi resolvida?
Precisa resolver o que coloquei em negrito?
Caso positivo, é só adaptar o comando anterior.....
cat texto.txt
Lin01_Col01:Lin01_Col02:Lin01_Col03:Lin01_Col04:Lin01_Col05
Lin02_Col01:Lin02_Col02:Lin02_Col03:Lin02_Col04:Lin02_Col05
Lin03_Col01:Lin03_Col02:Lin03_Col03:Lin03_Col04:Lin03_Col05
Lin04_Col01:Lin04_Col02:name = nameserver:Lin04_Col04:Lin04_Col05
Lin05_Col01:Lin05_Col02:Lin05_Col03:Lin05_Col04:Lin05_Col05
Lin06_Col01:Lin06_Col02:Lin06_Col03:Lin06_Col04:Lin06_Col05

name="Jorge Santos";
gawk -i inplace -v nome="${name}" -F":" '{OFS=":";if(NR==4) $3="name = "nome"";print}' texto.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
______________________________________________________________________



6. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 23/08/2022 - 21:43h


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!



7. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 24/08/2022 - 00:34h

Oliver, o melhor codigo foi esse até agora:
$gawk=`sudo -u root gawk -i inplace -F":" '{OFS="=";if(NR==4) $4="$NomeNoINPUThtml";print}' /Arquivo01.txt`;

Ele esta quase perfeito, unico problema que agora ele ta adicionando tres iguais antes do nome. "===". Por exemplo, o arquivo1 abaixo é assim:

Arquivo01.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoServidor

Após aplicar o comando : $gawk=`sudo -u root gawk -i inplace -F":" '{OFS="=";if(NR==4) $4="$NomeNoINPUThtml";print}' Arquivo1.txt`;

O arquivo1 fica assim e repare que a linha 4 era apenas apagar o NomeDoServidor e retirar os os tres iguais "===" que aparecem, ele esta juntando tudo na coluna 4, o nome que tava e o novo que veio que era pra ficar só ele, o do input. Repare como fica o arquivo01.txt alterado abaixo:

Arquivo01.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoServidor===NomeDoINPUThtml

O correto seria ficar assim, só com o nome que veio do input no html:
Arquivo01.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoINPUThtml

Obrigado Muito, muito obrigado mesmo.











8. Re: Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulári

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/08/2022 - 13:32h

Jorge, você está definindo o separador como ":"
Dessa forma não existe campo 4.
Veja:
awk -F":" '{print "Campos:"NF" Reg:"$0}' arq.txt
Campos:1 Reg:[usuario1]
Campos:1 Reg:shell=/bin/shels/usuario1
Campos:1 Reg:group=/etc/group/usuario1
Campos:1 Reg:home name=NomeDoServidor

----------------------------------------------------------------------------------------------------------------
Com o SEPARADOR DE CAMPOS correto
awk -F"=" '{if(NR==4) $2="ALTERADO";OFS="=";print}' arq.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name=ALTERADO

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



9. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 24/08/2022 - 21:32h

Boa noite Oliver! Dizem que baiano não trabalha. Eu saiu de casa amanhecendo, pego varios onibus, metro e ando muito pra chegar no trabalho, todo diiaaa e olha a hora que retorno. Desculpe a burrice Oliver, essa hora ja to mais cansado e mais burro ainda rs.
Eu troquei o separador pra igual e o OFS eu deixei vazio. Agora ele adiciona o input certinho, porém nao apaga a palavra da coluna 4 anterior e escreve tudo junto na coluna, como no exemplo abaixo:
$gawk=`sudo -u root gawk -i inplace -F"=" '{OFS="";if(NR==4) $4="$NomeDoINPUThtml";print}' /Arquivo1.txt`;

Arquivo01.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoServidorNomeDoINPUThtml






10. Re: Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário [

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/08/2022 - 23:39h


jorgessn escreveu:

Boa noite Oliver! Dizem que baiano não trabalha.
Eu saiu de casa amanhecendo, pego varios onibus, metro e ando muito pra chegar no trabalho, todo diiaaa e olha a hora que retorno. Desculpe a burrice Oliver, essa hora ja to mais cansado e mais burro ainda rs.
Eu troquei o separador pra igual e o OFS eu deixei vazio.
Agora ele adiciona o input certinho, porém nao apaga a palavra da coluna 4 anterior e escreve tudo junto na coluna, como no exemplo abaixo:
$gawk=`sudo -u root gawk -i inplace -F"=" '{OFS="";if(NR==4) $4="$NomeDoINPUThtml";print}' /Arquivo1.txt`;

Arquivo01.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoServidorNomeDoINPUThtml

Boa noite Jorge,
Realmente o deslocamento para o trabalho é complicado....
A volta é pior, pelo menos aqui em SP, eles diminuem a quantidade de ônibus.
-----------------------------------------------------------------------------------------------
Vamos lá,
Como te mostrei, não EXISTE CAMPO quatro!!!
Exceto a linha 01, os demais tem 2 campos, logo:
awk -F"=" '{if(NR==4) $2="ALTERADO";OFS="=";print}' arq.txt

No seu comando é só alterar:
$4="$NomeDoINPUThtml"
Para:
$2="$NomeDoINPUThtml"

Tá misturando NR 4 com campo 4..... :) , é o cansaço

Defina o OFS como fiz acima: OFS="="
É isso, vai dar certo!!!!
______________________________________________________________________
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
______________________________________________________________________



11. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 24/08/2022 - 23:42h

Oliver, deve ter alguma assombração aqui. Usei o comando que me passou com algumas alterações só que nao faz nada.
awk -F"=" '{if(NR==4) $2="ALTERADO";OFS="=";print}' arq.txt
obs= Coloquei o $4 pq é a coluna do Arquivo01.txt que quero apagar e rescrever e coloquei a $var que quero o novo nome. Ficou assim:
$comando =`sudo -u root awk -F"=" '{if(NR==4) $4="$var";OFS="=";print}' /Arquivo01.txt`;

Arquivo01.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoINPUThtml


Oliver, só vi sua resposta do post de cima as 23h agora. SP é loucura mesmo, morei ai metade da minha vida.
Eu fiz como falou mas nao vai. Vou olhar com calma, deve ter algum erro e nao to vendo.


12. Trocar a palavra da quarta linha e da quarta coluna do arquivo txt pelo post $_POST no formulário

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 12/09/2022 - 19:59h


Boa noite Oliver, eu mais uma vez lhe dando trabalho amigo, mas é que nenhuma das formas funcionou e esta da seguinte maneira agora mas nao funciona.

$trocaLinha=`sudo -u root awk -F"=" '{if(NR==4) $4="$NomeDaVarDoInputHTML";OFS="=";print}' /home/arq.txt`;

O arquivo esta assim:

arq.txt
[usuario1]
shell=/bin/shels/usuario1
group=/etc/group/usuario1
home name = NomeDoServidor

Desculpe o trabalho amigo, mas é só voce pra me ajudar.
Agradeço a ajuda




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts