Pular para o conteúdo

Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Enviado em 20/07/2012 - 10:15h

Como faço para escrever em um arquivo no final de uma linha especifica?

Meu código:

echo Entre o usuário
read usuario

if [ `grep -c php /home/jricardo/Documentos/palavras` -gt 0 ] #ele procura no documento "palavras" a string php

then
echo Encontrado
#Agora como eu faço para ele inserir a variável $usuario no final da mesma linha que ele encontrou a string php? #

else
echo Nao encontrado
fi

Responder tópico

2. Re: Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Melhor resposta

Enviado em 20/07/2012 - 12:04h

Segue uma forma de fazer isso:


#!/bin/bash

LINHA=$(egrep -in "$2" $1 | cut -d: -f1) # captura a linha com o conteúdo
CONTEUDO=$(head -n$LINHA $1 | tail -n1)
sed -i "${LINHA}i${CONTEUDO}$3" $1 # adiciona o conteudo_alvo e conteudo_novo na linha
sed -i "$(($LINHA+1))d" $1 # apaga a linha antiga
Use assim:

./script ARQUIVO CONTEUDO_ALVO CONTEUDO_NOVO

3. Re: Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Enviado em 20/07/2012 - 11:09h

alguém?

4. Re: Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Enviado em 20/07/2012 - 12:45h

Obrigado, funcionou certinho !

5. Re: Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Enviado em 23/07/2012 - 09:55h

Gostaria de agradecer novamente pela ajuda pelo seu script funcional,

Gostaria também de saber o que eu poderia modificar para quando a mesma palavra a ser pesquisada (conteúdo alvo) se repete, gostaria que ele adicionasse na primeira linha que encontrasse a palavra e ignorasse as outras.

6. Re: Inserir valor de variável no final de uma linha específica [RESOLVIDO]

Enviado em 23/07/2012 - 12:37h

ricardoschet escreveu:

Gostaria de agradecer novamente pela ajuda pelo seu script funcional,

Gostaria também de saber o que eu poderia modificar para quando a mesma palavra a ser pesquisada (conteúdo alvo) se repete, gostaria que ele adicionasse na primeira linha que encontrasse a palavra e ignorasse as outras.
Ok, bastaria adicioinar um head para filtra apenas a primeira ocorrência no egrep ou usar o parâmetro -m do próprio egrep, filtrando apenas 1 ocorrência, ficando assim:


#!/bin/bash

LINHA=$(egrep -in "$2" $1 | head -n1 | cut -d: -f1) # captura a linha com o conteúdo
CONTEUDO=$(head -n$LINHA $1 | tail -n1)
sed -i "${LINHA}i${CONTEUDO}$3" $1 # adiciona o conteudo_alvo e conteudo_novo na linha
sed -i "$(($LINHA+1))d" $1 # apaga a linha antiga
ou

[code]
#!/bin/bash

LINHA=$(egrep -in -m1 "$2" $1 cut -d: -f1) # captura a linha com o conteúdo
CONTEUDO=$(head -n$LINHA $1 | tail -n1)
sed -i "${LINHA}i${CONTEUDO}$3" $1 # adiciona o conteudo_alvo e conteudo_novo na linha
sed -i "$(($LINHA+1))d" $1 # apaga a linha antiga
[/cod


7. Muito Bom!

Enviado em 02/02/2013 - 10:23h

Obrigada pela contribuição, me ajudou muito!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder