- shell
+ Responder ao Tópico
-
shell
PessoAll..
o que estou tentando fazer é o seguinte.. tenho um arquivo.tmp e quero ler o conteudo deste arquivo e fazer um replace em uma determinada palavra....ex:
um arquivo chamado texto.tmp com o conteudo:
teste1
teste2
teste3
eu quero trocar o teste2 por:
arquivi texto_temp.tmp
teste50 teste51 teste52
fiz o seguinte:
temp=$(cat texto_temp.tmp)
e depois:
/bin/sed -i.bak "s/teste2/$temp/g" texto.tmp
só que a variável $temp não assume o valor do arquivo texto_temp para fazer o replace...
se alguem puder dar uma dica agradeço..
tks
-
shell
para declarar uma variável no shell, vc deve fazer o seguinte:
temp="`cat file`"
e depois usar ela como $temp tipo... echo $temp
mas note que o sinal de cráse `comando` é que é o responsável por fazer com que seja executado o comando cat no arquivo file... sem isso, o valor será apenas uma string com o valor "cat file"...
o outro problema é que se tiver 1, 2, 3, ..., n dados no arquivo file, o valor da variável será 1, 2, 3, ..., n e não um dado em específico...
-
shell
law,
Seu comando está correto. Pelo menos testei no bash e funcionou.
vinicius@slackware:~# sed "s/teste2/$temp/g" texto.tmp
teste1
teste50 teste51 teste52
teste3
Apresenta algum erro pra vc? Que shell vc usa?
Tenta proteger a variavel com apostofre (em alguns shell ocorre problema parecido)
Ou então assim:
sed "s/teste2/${temp}/g" texto.tmp
Abraços.
-
shell
então..
a variável é:
teste="`cat temp.tmp`"
e quando executo me retorna erro:
$sed "s/<\/BLABLA>/$teste/g" saida.txt
sed: -e expression #1, char 28: Unknown option to `s'
$sed "s/<\/BLABLA>/${teste}/g" saida.txt
sed: -e expression #1, char 28: Unknown option to `s'
se eu conseguir executar a variavel no sed será massa.
tks
law