Variavel usando o comando SED

1. Variavel usando o comando SED

Felipe Lima de Oliveira
felipelo

(usa Red Hat)

Enviado em 08/01/2015 - 19:31h

Galera,

Boa Noite.
Estou criando um script que ele gera um arquivo com o nome de tablespaces e um de querys do banco para despois usar o SED para enviar ao arquivo final. Já tentei várias formas e vou colocar aqui a que achei mais correta e não deu certo se alguem me ajudar agradeço:

Primeiro vou postar os 2 arquivos que já consegui gerar.

TableSpace -> Depende do banco de dados pode ser que tanha umas 100 o script ja cria isso pra mim

ts_[ARQUIVO_DAD], \
ts_[ARQUIVO_HML_DAD], \
ts_[ARQUIVO_HML_IND_M], \
ts_[ARQUIVO_HML_IND_P], \
ts_[ARQUIVO_IND_M], \
ts_[ARQUIVO_IND_P], \
ts_[ARQUIVO_TRN_DAD], \
ts_[ARQUIVO_TRN_IND_M], \
ts_[ARQUIVO_TRN_IND_P], \


Query -> O mesmo da tablespace

ts_[ARQUIVO_DAD].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_DAD'
ts_[ARQUIVO_DAD].NoDataFound=none
ts_[ARQUIVO_HML_DAD].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_HML_DAD'
ts_[ARQUIVO_HML_DAD].NoDataFound=none
ts_[ARQUIVO_HML_IND_M].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_HML_IND_M'
ts_[ARQUIVO_HML_IND_M].NoDataFound=none
ts_[ARQUIVO_HML_IND_P].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_HML_IND_P'
ts_[ARQUIVO_HML_IND_P].NoDataFound=none
ts_[ARQUIVO_IND_M].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_IND_M'
ts_[ARQUIVO_IND_M].NoDataFound=none
ts_[ARQUIVO_IND_P].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_IND_P'
ts_[ARQUIVO_IND_P].NoDataFound=none
ts_[ARQUIVO_TRN_DAD].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_TRN_DAD'
ts_[ARQUIVO_TRN_DAD].NoDataFound=none
ts_[ARQUIVO_TRN_IND_M].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_TRN_IND_M'
ts_[ARQUIVO_TRN_IND_M].NoDataFound=none
ts_[ARQUIVO_TRN_IND_P].Query=select "% USED" from dibda.zabbix_ts where tablespace_name='ARQUIVO_TRN_IND_P'
ts_[ARQUIVO_TRN_IND_P].NoDataFound=none


SCRIPT FINAL -> Quero pegar o resultado desses 2 arquivos e substituir ou colocar em determinada linha no meu arquivo final.
Segue abaixo. O de query ja consegui usando o comando CAT que joga o resultado no final do arquivo

#!/bin/bash

#Cria variavel com as Tablespaces para colocar no arquivo de query
VAR=$(cat /tmp/tsname)


#Substitui no aqruivo de query o 7 pela variavel -> Primeira tentantiva coloquei o numero na linha pois só tem ele no arquivo e tentei substituir pela variavel

sed -i "s|7|$VAR|g" query.props

#Segunda tentativa Coloca o resultado da variavel na linha 8 do arquivo.
sed '8s/.*/$VAR/' query_padrao.props > query.props


#Joga o resultado do cat para o arquivo final de query
cat /tmp/query.txt >> /root/query.props


É isso se alguem puder me ajudar agradeço.


  


2. Re: Variavel usando o comando SED

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/01/2015 - 20:21h

Pelo menos para mim, está confuso demais :P

felipelo escreveu:

Estou criando um script que ele gera um arquivo com o nome de tablespaces e um de querys do banco para despois usar o SED para enviar ao arquivo final. Já tentei várias formas e vou colocar aqui a que achei mais correta e não deu certo se alguem me ajudar agradeço:

Primeiro vou postar os 2 arquivos que já consegui gerar.

TableSpace -> Depende do banco de dados pode ser que tanha umas 100 o script ja cria isso pra mim

[...]

Query -> O mesmo da tablespace

[...]

SCRIPT FINAL -> Quero pegar o resultado desses 2 arquivos e substituir ou colocar em determinada linha no meu arquivo final.

Como resultado desses dois arquivos você quer dizer que existe ainda mais um procedimento antes? Por exemplo, você vai executar o arquivo de queries e é a saída do banco que você vai usar?

Com esse arquivo final são três arquivos, como eles se relacionam? Concatenação, substituição de alguma parte, inserir conteúdo de um arquivo em local específico de outro ...?


Segue abaixo. O de query ja consegui usando o comando CAT que joga o resultado no final do arquivo

#!/bin/bash

#Cria variavel com as Tablespaces para colocar no arquivo de query
VAR=$(cat /tmp/tsname)


O que é esse arquivo? É o "TableSpace" anteriormente mencionado?



#Substitui no aqruivo de query o 7 pela variavel -> Primeira tentantiva coloquei o numero na linha pois só tem ele no arquivo e tentei substituir pela variavel

sed -i "s|7|$VAR|g" query.props


Esse "query.props" é o arquivo final?

Aqui você está substituindo todas as ocorrências do número 7 em todas as linhas do arquivo "query.props" pelo conteúdo de $VAR. Era isto mesmo?



#Segunda tentativa Coloca o resultado da variavel na linha 8 do arquivo.
sed '8s/.*/$VAR/' query_padrao.props > query.props


Esse arquivo "query_padrao.props" é o "Query" anteriormente mencionado?

Aqui você está substituindo a oitava linha do arquivo query_padrao.props pelo conteúdo de $VAR. Era isto mesmo?



#Joga o resultado do cat para o arquivo final de query
cat /tmp/query.txt >> /root/query.props



Apareceu um quarto arquivo aqui, esse /tmp/query.txt. Quem é ele nessa história?



3. Re: Variavel usando o comando SED

Felipe Lima de Oliveira
felipelo

(usa Red Hat)

Enviado em 08/01/2015 - 20:24h

textmode escreveu:
Apareceu um quarto arquivo aqui, esse /tmp/query.txt. Quem é nele nesse história?


Ele na verdade é o arquivo de querys que eu gero e já consigo usar ele usando o CAT >>. Meu unico problema é incluir o arquivo com as tabelas no meio do meu arquivo final.



4. Re: Variavel usando o comando SED

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/01/2015 - 20:39h

felipelo escreveu:

textmode escreveu:
Apareceu um quarto arquivo aqui, esse /tmp/query.txt. Quem é nele nesse história?


Ele na verdade é o arquivo de querys que eu gero e já consigo usar ele usando o CAT >>. Meu unico problema é incluir o arquivo com as tabelas no meio do meu arquivo final.


Resumindo tudo, você quer inserir o conteúdo do arquivo "A.txt" no meio do arquivo "B.txt", por exemplo, na linha 7. Correto?

Basta fazer isto:

sed '7rA.txt' B.txt 


O conteúdo de "A.txt" será inserido após a sétima linha do arquivo "B.txt".



5. Re: Variavel usando o comando SED

Felipe Lima de Oliveira
felipelo

(usa Red Hat)

Enviado em 08/01/2015 - 20:51h

textmode escreveu:

felipelo escreveu:

textmode escreveu:
Apareceu um quarto arquivo aqui, esse /tmp/query.txt. Quem é nele nesse história?


Ele na verdade é o arquivo de querys que eu gero e já consigo usar ele usando o CAT >>. Meu unico problema é incluir o arquivo com as tabelas no meio do meu arquivo final.


Resumindo tudo, você quer inserir o conteúdo do arquivo "A.txt" no meio do arquivo "B.txt", por exemplo, na linha 7. Correto?

Basta fazer isto:

sed '7rA.txt' B.txt 


O conteúdo de "A.txt" será inserido após a sétima linha do arquivo "B.txt".


Simples mais eu não sabia ... Obrigado resolveu meu problema.

Ficou assim:

sed '7r/tmp/tsname' query_padrao.props > query.props 








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts