Comando sed não está funcionando dentro do loop - Shell Script [RESOLVIDO]

13. Re: Comando sed não está funcionando dentro do loop - Shell Script [RESOLVIDO]

Edson Sales
eSales

(usa Ubuntu)

Enviado em 09/03/2019 - 12:22h

PROBLEMA RESOLVIDO!!!

A segunda sugestão de Marcelo Oliver com o awk funcionou de forma perfeita e rápida!
Antes tive que estudar um pouco do awk, pois não estava entendendo nada do código que Marcelo havia escrito. Após isso, simplifiquei um pouco:
linhas=$(awk -F";" '$5~/[[:alpha:]]/{printf "%id;", NR}' principal.txt) 

Então usei a variável criada dentro do sed:
 sed -i "${linhas}" principal.txt 

E obtive o resultado que queria!!

Com o comando for não funcionou de nenhuma maneira endereçando pelo número da linha com o sed. Talvez tenha uma razão lógica pra não funcionar dessa maneira, pois após a primeira iteração, o número das linhas (endereço) não mais corresponderiam as linhas desejadas.

Muito agradecido aos colegas pela ajuda e colaboração!


  


14. Re: Comando sed não está funcionando dentro do loop - Shell Script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/03/2019 - 12:59h


Mauriciodez escreveu:

Ryuk escreveu:
Por que ainda tá insistindo no "for"?
O comando do Marcelo já resolve, e de forma bem mais elegante!


eu creio que a resposta disso seja simples ... algumas soluções do Marcelo brilham à perfeição .. o problema é conseguir assimilar o comando ... eu já disse algo semelhante a isso antes ... eu prefiro fazer um script mais longo do que um compacto que não entendo ... o conhecimento do Marcelo nesse tal de shell é impressionante !!!

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------


Mauricio, boa tarde.
Nada de "anormal" no comando....
Apenas usando uns poucos recursos que o mesmo oferece....
Pra que vários pipes, se um comando resolve tudo.....

Da até para fazer em uma unica linha:
awk 'BEGIN{printf "sed -i \""} /[24680]$/ {printf "%sd;" ,NR} END{printf "\" linhas.txt "}' linhas.txt
sed -i 2d;4d;6d;8d;10d; linhas.txt #mostrando a saída
awk 'BEGIN{printf "sed -i \""} /[24680]$/ {printf "%sd;" ,NR} END{printf "\" linhas.txt "}' linhas.txt|bash 
#executando
Ou
eval $(awk 'BEGIN{printf "sed \""} /[24680]$/ {printf "%sd;" ,NR} END{printf "\" linhas.txt "}' linhas.txt) 

O "lema" é extrair o máximo do "comando"...
Abç:
Marcelo



15. Re: Comando sed não está funcionando dentro do loop - Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 09/03/2019 - 13:09h


msoliver escreveu:
Mauricio, boa tarde.
Nada de "anormal" no comando....
Apenas usando uns poucos recursos que o mesmo oferece....
Pra que vários pipes, se um comando resolve tudo.....

Da até para fazer em uma unica linha:
awk 'BEGIN{printf "sed -i \""} /[24680]$/ {printf "%sd;" ,NR} END{printf "\" linhas.txt "}' linhas.txt
sed -i 2d;4d;6d;8d;10d; linhas.txt #mostrando a saída
awk 'BEGIN{printf "sed -i \""} /[24680]$/ {printf "%sd;" ,NR} END{printf "\" linhas.txt "}' linhas.txt|bash 
#executando
Ou
eval $(awk 'BEGIN{printf "sed \""} /[24680]$/ {printf "%sd;" ,NR} END{printf "\" linhas.txt "}' linhas.txt) 

O "lema" é extrair o máximo do "comando"...
Abç:
Marcelo


velho ... vc sabe que esses comandos são brilhantes e poucas pessoas conseguiriam faze-los ... depois de pronto, pra quem entende até fica facil de interpretar, mas fazer do zero é coisa de alienigenas.

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




16. Re: Comando sed não está funcionando dentro do loop - Shell Script [RESOLVIDO]

Edson Sales
eSales

(usa Ubuntu)

Enviado em 09/03/2019 - 15:49h

Mauriciodez escreveu:

velho ... vc sabe que esses comandos são brilhantes e poucas pessoas conseguiriam faze-los ... depois de pronto, pra quem entende até fica facil de interpretar, mas fazer do zero é coisa de alienigenas.

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------



Concordo com você, Maurício. Achei de um nível bem elevado o código que o Marcelo apresentou.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts