Problema com script usando sed {dúvida}

1. Problema com script usando sed {dúvida}

Linx Debian
linxdb

(usa Debian)

Enviado em 20/05/2024 - 19:33h

boa noite, primeiramente obrigado pela atenção!

Tenho o arquivo 'nometeste' com o conteúdo:
5c:62:8b:2a:20:1c,192.168.25.101,on,,,,TESTE1 TESTE1 TESTE1

e o arquivo 'alterateste' com o conteúdo
tr><td class="header_c">Usuário: 192.168.25.16</td></tr>

Preciso coletar o nome 'TESTE1 TESTE1 TESTE1' do arquivo 'nometeste' e alterar no arquivo 'alterateste' o nome 'Usuário' no meio da linha pelo nome coletado.

criei o seguinte script:

!#/bin/bash
nome=$(sed -n "1p" nometeste | awk -F ',' '{print$7}')
sed -i "s/Usuário/$nome/" alterateste

Porém, após executar o script na hora de conferir o arquivo alterateste com o comando cat eu tenho a seguinte saída:
: 192.168.25.16</td></tr> TESTE1 TESTE1

Pelo que pesquisei meu problema é por causa do operador '$' que no SED manda o texto pro final da linha, porém fiz testes com nomenclaturas e não consegui resolver.

Se alguém puder me dar alguma luz, agradeço!

Abraço!




  


2. Re: Problema com script usando sed {dúvida}

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/05/2024 - 20:18h


linxdb escreveu:

boa noite, primeiramente obrigado pela atenção!

Tenho o arquivo 'nometeste' com o conteúdo:
5c:62:8b:2a:20:1c,192.168.25.101,on,,,,TESTE1 TESTE1 TESTE1

e o arquivo 'alterateste' com o conteúdo
tr><td class="header_c">Usuário: 192.168.25.16</td></tr>

Preciso coletar o nome 'TESTE1 TESTE1 TESTE1' do arquivo 'nometeste' e alterar no arquivo 'alterateste' o nome 'Usuário' no meio da linha pelo nome coletado.

criei o seguinte script:

!#/bin/bash
nome=$(sed -n "1p" nometeste | awk -F ',' '{print$7}')
sed -i "s/Usuário/$nome/" alterateste

Porém, após executar o script na hora de conferir o arquivo alterateste com o comando cat eu tenho a seguinte saída:
: 192.168.25.16</td></tr> TESTE1 TESTE1

Pelo que pesquisei meu problema é por causa do operador '$' que no SED manda o texto pro final da linha, porém fiz testes com nomenclaturas e não consegui resolver.

Se alguém puder me dar alguma luz, agradeço!

Abraço!


Boa noite.
Segue sugestão:
nome=$(awk -F"," 'NR==1{printf "%s",$NF}' nome.txt) #NR==1 => pega a 1ª linha - #$NF => ultimo campo
sed -i "s/Usuário/$nome/" altera.txt
cat altera.txt
tr><td class="header_c">TESTE1 TESTE1 TESTE1: 192.168.25.16</td></tr>

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



3. Re: PROBLEMA COM SCRIPT USANDO SED {DÚVIDA}.

Linx Debian
linxdb

(usa Debian)

Enviado em 20/05/2024 - 20:50h

msoliver escreveu:


linxdb escreveu:

boa noite, primeiramente obrigado pela atenção!

Tenho o arquivo 'nometeste' com o conteúdo:
5c:62:8b:2a:20:1c,192.168.25.101,on,,,,TESTE1 TESTE1 TESTE1

e o arquivo 'alterateste' com o conteúdo
tr><td class="header_c">Usuário: 192.168.25.16</td></tr>

Preciso coletar o nome 'TESTE1 TESTE1 TESTE1' do arquivo 'nometeste' e alterar no arquivo 'alterateste' o nome 'Usuário' no meio da linha pelo nome coletado.

criei o seguinte script:

!#/bin/bash
nome=$(sed -n "1p" nometeste | awk -F ',' '{print$7}')
sed -i "s/Usuário/$nome/" alterateste

Porém, após executar o script na hora de conferir o arquivo alterateste com o comando cat eu tenho a seguinte saída:
: 192.168.25.16</td></tr> TESTE1 TESTE1

Pelo que pesquisei meu problema é por causa do operador '$' que no SED manda o texto pro final da linha, porém fiz testes com nomenclaturas e não consegui resolver.

Se alguém puder me dar alguma luz, agradeço!

Abraço!


Boa noite.
Segue sugestão:
nome=$(awk -F"," 'NR==1{printf "%s",$NF}' nome.txt) #NR==1 => pega a 1ª linha - #$NF => ultimo campo
sed -i "s/Usuário/$nome/" altera.txt
cat altera.txt
tr><td class="header_c">TESTE1 TESTE1 TESTE1: 192.168.25.16</td></tr>

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


Fiz o teste mas a saída do cat continuou a msm
: 192.168.25.16</td></tr> TESTE1 TESTE1

Obrigado pela sugestão!!!




4. Re: Problema com script usando sed {dúvida}

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/05/2024 - 17:20h


linxdb escreveu:

msoliver escreveu:


linxdb escreveu:

boa noite, primeiramente obrigado pela atenção!

Tenho o arquivo 'nometeste' com o conteúdo:
5c:62:8b:2a:20:1c,192.168.25.101,on,,,,TESTE1 TESTE1 TESTE1

e o arquivo 'alterateste' com o conteúdo
tr><td class="header_c">Usuário: 192.168.25.16</td></tr>

Preciso coletar o nome 'TESTE1 TESTE1 TESTE1' do arquivo 'nometeste' e alterar no arquivo 'alterateste' o nome 'Usuário' no meio da linha pelo nome coletado.

criei o seguinte script:

!#/bin/bash
nome=$(sed -n "1p" nometeste | awk -F ',' '{print$7}')
sed -i "s/Usuário/$nome/" alterateste

Porém, após executar o script na hora de conferir o arquivo alterateste com o comando cat eu tenho a seguinte saída:
: 192.168.25.16</td></tr> TESTE1 TESTE1

Pelo que pesquisei meu problema é por causa do operador '$' que no SED manda o texto pro final da linha, porém fiz testes com nomenclaturas e não consegui resolver.

Se alguém puder me dar alguma luz, agradeço!

Abraço!


Boa noite.
Segue sugestão:
nome=$(awk -F"," 'NR==1{printf "%s",$NF}' nome.txt) #NR==1 => pega a 1ª linha - #$NF => ultimo campo
sed -i "s/Usuário/$nome/" altera.txt
cat altera.txt
tr><td class="header_c">TESTE1 TESTE1 TESTE1: 192.168.25.16</td></tr>

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


Fiz o teste mas a saída do cat continuou a msm
: 192.168.25.16</td></tr> TESTE1 TESTE1

Obrigado pela sugestão!!!


Boa tarde Linxbd.
Muito estranho esse comportamento....
O comando sed sugerido, é o básico.
sed -i "s/Usuário/$nome/" alterateste 

troca Usuário por $nome.
Poste a saída dos comandos abaixo:
sed --version
bash --version
file alterateste

A suspeita era que o "alterateste"
estivesse com o padrão "DOS",
mas simulei essa situação e funcionou normalmente.


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts