Inseri texto em um arquivo [RESOLVIDO]

13. Re: Inseri texto em um arquivo [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/08/2016 - 21:05h

Mauriciodez escreveu:

Pessoas ... seguinte

Funciona no bash, mas não altera o arquivo.
cat arquivo.txt | paste -s | sed 's/a\tb/a\ttexto\tb/1; s/\t/\n/g' 


Funciona no bash, mas não altera o arquivo.
awk '!encontrado && /b/ {print "teste" ; encontrado=1} 1' arquivo.txt 


tentei assim e apagou o arquivo
awk '!encontrado && /b/ {print "teste" ; encontrado=1} 1' > arquivo.txt 


Não funciona ... meu bash é 4.3.30
NLin=$(egrep -n -m1 'b' arquivo.txt|cut -d: -f1) | sed -i "${NLin}i\TEXTO INSERIDO" arquivo.txt 



mauricio@Phantom:~/área de trabalho$ sed -i "$"NLin"i\TEXTO INSERIDO" arquivo.txt | sed -i ''$NLin'i\TEXTO INSERIDO' arquivo.txt
sed: -e expressão #1, caractere 3: Há caracteres sobrando após o comando
mauricio@Phantom:~/área de trabalho$


pessoas ... fiquei ontem até altas horas tentando fazer essa joça funcionar e só consegui uma dor nas costas

Listeiro ... não vou testar o script pq não vou usar ele ... a intenção é fazer com uma linha de comando pq essa é só uma alteração q vou ter que fazer ... pode-se que no futuro apareça mais alterações pontuais !!!
__________________________________________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

__________________________________________________________________________________________
Mauricio, boa noite.
Executei aqui, da forma que vc esta fazendo, e na 1ª vez, deu erro...
NLin=$(egrep -n -m1 'b' arquivo.txt|cut -d: -f1) | sed -i "${NLin}i\TEXTO INSERIDO" arquivo.txt
A conclusão é a seguinte:
"Parece" que o comando SED (algumas vezes) não consegue interpretar a var "NLin".
Esse "PIPE" entre os dois comandos . . . Sinceramente essa sintaxe "me" é estranha . . .
Já que os comandos são independentes e não há redirecionamento.
Se existe a necessidade de fazer em uma linha, troque o pipe por ; (ponto e virgula)
NLin=$(egrep -n -m1 'b' arquivo.txt|cut -d: -f1) ; sed -i "${NLin}i\TEXTO INSERIDO" arquivo.txt

Marcelo Oliver




  


14. Re: Inseri texto em um arquivo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/08/2016 - 21:28h

Tente agora:

sed 'N;s/a\nb/a\nFrase.\nb/1' -i ARQUIVO_DE_TESTE 


----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



15. Re: Inseri texto em um arquivo [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 17/08/2016 - 21:31h

msoliver escreveu:
Se existe a necessidade de fazer em uma linha


nem tem essa necessidade de fazer em uma linha só ... eu que pensei que poderia fazer os dois em uma linha massssssssss ... como sou praticamente ignorante geral nesses comandos nem lembrei do ";" para separar os dois ... vou tentar aqui depois e posto os results .. por enquanto ainda curando a dor nas costas !!!

aí ... aquele do AWK achei bem "elegante" .. heheheh ... se vc souber como fazer ele funcionar no arquivo manda a letra aí !!! abraços

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


16. Re: Inseri texto em um arquivo [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 17/08/2016 - 21:33h

listeiro_037 escreveu:
sed 'N;s/a\nb/a\nFrase.\nb/1' -i ARQUIVO_DE_TESTE 



assim q a dor nas costas passar eu tento aqui ... valew !!!!

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


17. Re: Inseri texto em um arquivo

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 18/08/2016 - 01:40h

Marcelo ... agora a parada funcionou .. só deixa eu ver se eu entendi a sintaxe da parada
vc atribuiu uma variável = NLin
Atribuiu que a primeira instancia e a primeira letra sendo "b" seria o valor de NLin
Depois escreveu no arquivo "Texto Inserido"

não entendi umas paradas ... pra que que serve os "$" ... qual a finalidade do "-n" no egrep e tb pq o uso do "egrep" ao invés do "grep" ... qual a moral daquele "i" em "i\TEXTO INSERIDO"
msoliver escreveu:
NLin=$(egrep -n -m1 'b' arquivo.txt|cut -d: -f1) ; sed -i "${NLin}i\TEXTO INSERIDO" arquivo.txt 



listeiro .. gosto muito de resolver as coisas o mais simples possível ... esse comando funciona legal, pena que eu estou tendo enorme dificuldades para assimilar essas sintaxes do "sed" ..
listeiro_037 escreveu:
sed 'N;s/a\nb/a\nFrase.\nb/1' -i arquivo.txt 



OBS: ainda estou invocado com aquele AWK, tão facil ele mas não achei "utilidade útil" já q tudo q encontrei na net é só para mostrar a saida na tela.



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


18. Re: Inseri texto em um arquivo

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 05/09/2016 - 19:12h

marcelo ... o comando não funcionou não ... até funcionou só com as letras, mas quando testei no arquibo real ele inseriu no lugar errado.

NLin=$(egrep -n -m1 'b' arq.txt |cut -d: -f1) ; sed -i "${NLin}i\Aqui vai um texto" arq.txt 


se o arquivo tiver só a, b, c, d etc nas linhas funciona, mas vamos supor que o arquivo esteja assim já não funciona

a - a lua é um quadrado
a - a lua é uma bola
a - a terra é terra
b - seria se fosse
b - bom não é ruim
b - mil novecentos e la vai pedrinha
c - nada a ver
d - campos sale
d - quase sem querer


na verdade nenhum deles funciona


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


19. Re: Inseri texto em um arquivo [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 05/09/2016 - 20:23h

msoliver escreveu:

Mauricio, funciona sim!!!!
Com uma pequena alteração . . .
Para CASAR a LETRA INICIAL, faça:
...


então ... o pior é q já tinha feito essa parada de colocar o circunflexo em outros comando em nem me dei conta que eu poderia usar ele aqui tb ... aff .... kkkkkkkkkkkkkkkkkkkkk

seguinte ... eu aqui tenho o -m1 ... eu poderia usar o $ para indicar a ultima ocorrência ao invés da primeira ou nesse caso o parametro -m não entra ???



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


20. Re: Inseri texto em um arquivo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/09/2016 - 21:06h

Mauriciodez escreveu:

msoliver escreveu:

Mauricio, funciona sim!!!!
Com uma pequena alteração . . .
Para CASAR a LETRA INICIAL, faça:
...

então ... o pior é q já tinha feito essa parada de colocar o circunflexo em outros comando em nem me dei conta que eu poderia usar ele aqui tb ... aff .... kkkkkkkkkkkkkkkkkkkkk

seguinte ... eu aqui tenho o -m1 ... eu poderia usar o $ para indicar a ultima ocorrência ao invés da primeira ou nesse caso o parametro -m não entra ???
___________________________________________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


egrep -m$, não funciona, o "-m" só aceita números....
Segue uma GAMBIARRA:
egrep -n '^b' ARQUIVO.txt|cut -d":" -f1|tail -n1 #Esse é o nº da linha da ultima ocorrência

marcelo oliver



21. Re: Inseri texto em um arquivo

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 05/09/2016 - 22:57h

Não sou muito bom com regex mais essa gambiarra talvez possa te ajudar.

texto = Oque você quer colocar entre c e d

paste -s file.txt | sed 's/c\td/c\ttexto\td/1; s/\t/\n/g;' | tee file.txt 


Saída:
a
b
c
texto
d
e
f



22. Re: Inseri texto em um arquivo [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 05/09/2016 - 23:37h

msoliver escreveu:
Segue uma GAMBIARRA:
egrep -n '^b' ARQUIVO.txt|cut -d":" -f1|tail -n1 #Esse é o nº da linha da ultima ocorrência


hahahaha ... eu tava justamente tentando fazer esse tail funcionar aqui e não tava conseguindo ... tinha substituido o cut por ele !!

mas olha só uma parada que ainda não entrou na minha cabeça
egrep -n '^b' ARQUIVO.txt|cut -d":" -f1|tail -n1 ... blz .. aqui eu tenho o numero da linha mas agora como eu faria para jogar ele no sed ... eu teria que primeiro fazer esse comando uma variável ( como vc fez no outro comando ) e depois chamar a variável no sed ???
NLin=$(egrep -n '^-b' arq.txt|cut -d":" -f1|tail -n1) ; sed -i "${NLin}a\ TEXTO INSERIDO" arq.txt 


ctw6av ... valeu aí pelo código .. mas meu problema não é só o comando ... é entender ele tb ... esse SED que vc postou não entendi nem a vírgula dele !!


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


23. Re: Inseri texto em um arquivo [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 05/09/2016 - 23:39h

Mauriciodez escreveu:
ctw6av ... valeu aí pelo código .. mas meu problema não é só o comando ... é entender ele tb ... esse SED que vc postou não entendi nem a vírgula dele !!


Eu também não kkkkkkk foi mal!




----------------------------------------------------------
A Internet... foi projetada no espírito da confiança. Nem os protocolos de rede de comunicações nem o software que comanda os sistemas computacionais conectados a rede foram arquitetados para operação num ambiente no qual estão sob ataque.
----------------------------------------------------------


24. Re: Inseri texto em um arquivo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/09/2016 - 00:19h

Mauriciodez escreveu:

msoliver escreveu:
Segue uma GAMBIARRA:
egrep -n '^b' ARQUIVO.txt|cut -d":" -f1|tail -n1 #Esse é o nº da linha da ultima ocorrência


hahahaha ... eu tava justamente tentando fazer esse tail funcionar aqui e não tava conseguindo ... tinha substituido o cut por ele !!

mas olha só uma parada que ainda não entrou na minha cabeça
egrep -n '^b' ARQUIVO.txt|cut -d":" -f1|tail -n1 ... blz .. aqui eu tenho o numero da linha mas agora como eu faria para jogar ele no sed ... eu teria que primeiro fazer esse comando uma variável ( como vc fez no outro comando ) e depois chamar a variável no sed ???
NLin=$(egrep -n '^-b' arq.txt|cut -d":" -f1|tail -n1) ; sed -i "${NLin}a\ TEXTO INSERIDO" arq.txt 


ctw6av ... valeu aí pelo código .. mas meu problema não é só o comando ... é entender ele tb ... esse SED que vc postou não entendi nem a vírgula dele !!
__________________________________________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

É isso mesmo . . .
NLin=$(egrep -n '^b' ARQUIVO.txt|cut -d":" -f1|tail -n1) # Esse "cara" pega a ultima ocorrencia e "joga" na VAR $NLin
sed -i "${NLin}a\ TEXTO INSERIDO" arq.txt #Insere "TEXTO INSERIDO" APÓS A LINHA DEFINIDA EM $nNLin

echo -e "\nLINHA"{1..10}|sed '1d' >> tst.txt
cat tst.txt
LINHA1
LINHA2
LINHA3
LINHA4
LINHA5
LINHA6
LINHA7
LINHA8
LINHA9
LINHA10

exemplo:
sed '5a\TEXTO INSERIDO' tst.txt
LINHA1
LINHA2
LINHA3
LINHA4
LINHA5
TEXTO INSERIDO
LINHA6
LINHA7
LINHA8
LINHA9
LINHA10

marcelo oliver





01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts