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

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

João Ricardo
ricardoschet

(usa Debian)

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



  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

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]

João Ricardo
ricardoschet

(usa Debian)

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

alguém?


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

João Ricardo
ricardoschet

(usa Debian)

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]

João Ricardo
ricardoschet

(usa Debian)

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]

Raimundo Alves Portela
rai3mb

(usa Outra)

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!

Ariane Falcão
arianevsf

(usa Debian)

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

Obrigada pela contribuição, me ajudou muito!