alinhamento dados na linha [RESOLVIDO]

1. alinhamento dados na linha [RESOLVIDO]

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 10/08/2011 - 10:55h

Hebang,
Bom dia

Poderia me ajudar....

Tenho um script, (criado graças a sua ajuda). Em cima dele implementei algumas outras informaçoes. O resultado... ficou com a carinha conforme abaixo:

------------------------------------------------------------------------------------------------------------
Banco de Dados....: WIS (Producao) Data: 10-08-2011 Hora: 10:42:17 AM

TABLESPACE_NAME TAMANHO_TOTAL USADO USADO%
_______________ _____________ __________ _________

TLFNC_DATA_MEDIUM 550,00 544,06 99
------------------------------------------------------------------------------------------------------------


A dúvida é tem como alinhar os valores conforme os echos " " adicionados.
O arquivo que você me encaminhou na ultima vez.

for i in $(ls arquivos_*.txt); do
cat "$i" | expand | tr -s " " | while read line; do
fld=$(echo $line | cut -d ' ' -f 4)

if [ $fld -gt 90 ]; then
echo $line
fi
done
done

exit 0


Nos meus arquivos.txt as colunas estão alinhadas e quando executa o echo $line acaba juntando as colunas.
exemplo:

TLFNC_DATA_MEDIUM 550,00 544,06 99


Obrigado novamente pela ajuda


  


2. Re: alinhamento dados na linha [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 10/08/2011 - 11:08h

Este comando separa por tabulação:

awk -v OFS='\t' '$1=$1' arquivo.txt


3. Re: alinhamento dados na linha [RESOLVIDO]

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 10/08/2011 - 11:18h

alexandregms
Uma pergunta. Existe como posicionar coluna por coluna.
Exemplo:
Meu arquivo.txt tem 4 colunas, lendo este arquivo.txt tem como posicionar aonde eu quero que saia a coluna 2,3 e 4?

Obrigado novamente


4. Re: alinhamento dados na linha [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 10/08/2011 - 12:50h

Pesquisei sobre este caso porque também vou apanhar pra resolver rsrs.

Parece que usando o awk e formatando os dados com printf

Na parte onde fala sobre awk continuação.
ftp://ftp.unicamp.br/pub/apoio/treinamentos/unix/prog_shell.pdf

Espero que ajude.

GA_Tux




5. Re: alinhamento dados na linha [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 10/08/2011 - 12:51h

Fala!

Vamos fazer um teste simples:
troque o "echo $line" por "echo $i" e veja se resolve.


6. Re: alinhamento dados na linha [RESOLVIDO]

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 10/08/2011 - 13:24h

Hebang

Eu troquei más deu erro.

line 71: [: /home/oracle/scripts/LOGSTBS/tablespaces_FPW.txt: integer expression expected

A linha 71 aponta para if [ $fld -gt 90 ]; conforme o script abaixo

O meu script está assim......


while read inputline
do
SID="$(echo $inputline | cut -f1)"
ORACLE_SID=$SID
TBS_DIR1="/home/oracle/scripts/LOGSTBS"

for i in $(ls ${TBS_DIR1}/tablespaces_$ORACLE_SID.txt);
do
cat "$i" | expand | tr -s " " | while read line;
do
fld=$(echo $i | cut -d ' ' -f 4)

if [ $fld -gt 90 ];
then
echo "Banco de Dados....: $ORACLE_SID (Producao) Data: $data Hora: $time " >> $TBS_LOG
echo " " >> $TBS_LOG
echo "TABLESPACE_NAME " "TAMANHO_TOTAL " "USADO " " USADO% " >> $TBS_LOG
echo "_______________ " "_____________ " "__________ " " _________" >> $TBS_LOG
echo " " >> $TBS_LOG
echo $line >> $TBS_LOG
echo " " >> $TBS_LOG
echo " " >> $TBS_LOG
echo " " >> $TBS_LOG
echo " " >> $TBS_LOG
fi
done
done
rm ${TBS_DIR1}/tablespaces1_$ORACLE_SID.txt
done < ${TBS_DIR1}/tablespaces.txt


7. Re: alinhamento dados na linha [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 10/08/2011 - 13:32h

Não cara, acho que não expliquei direito: o echo do "fld" tu deixa como tava, muda só o echo que tá dentro do If, que é o que vai printar na tela.


8. Re: alinhamento dados na linha [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/08/2011 - 13:38h

column


9. Re: alinhamento dados na linha [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/08/2011 - 13:51h

for bla,bla,bla
echo $SAIDA
done >> /tmp/saida.txt
column -t -c4 ./saida.txt
rm -f /tmp/saida


10. Re: alinhamento dados na linha [RESOLVIDO]

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 10/08/2011 - 13:53h

Hebang

Não funcionou segue resultado.

Banco de Dados....: intranet (Producao) Data: 10-08-2011 Hora: 01:45:43 PM

TABLESPACE_NAME TAMANHO_TOTAL USADO USADO%
_______________ _____________ __________ _________

DADOS 2.800,00 2.724,44 97

segue o script alterado...


while read inputline
do
SID="$(echo $inputline | cut -f1)"
ORACLE_SID=$SID
TBS_DIR1="/home/oracle/scripts/LOGSTBS"

for i in $(ls ${TBS_DIR1}/tablespaces_$ORACLE_SID.txt);
do
cat "$i" | expand | tr -s " " | while read line;
do
fld=$(echo $line | cut -d ' ' -f 4)

if [ $fld -gt 90 ];
then
echo "Banco de Dados....: $ORACLE_SID (Producao) Data: $data Hora: $time " >> $TBS_LOG
echo " " >> $TBS_LOG
echo "TABLESPACE_NAME " "TAMANHO_TOTAL " "USADO " " USADO% " >> $TBS_LOG
echo "_______________ " "_____________ " "__________ " " _________" >> $TBS_LOG
echo " " >> $TBS_LOG
echo $line >> $TBS_LOG
echo $i >> $TBS_LOG
echo " " >> $TBS_LOG
echo " " >> $TBS_LOG
echo " " >> $TBS_LOG
echo " " >> $TBS_LOG
fi
done
done
rm ${TBS_DIR1}/tablespaces1_$ORACLE_SID.txt
done < ${TBS_DIR1}/tablespaces.txt




11. Re: alinhamento dados na linha [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/08/2011 - 13:55h

#!/bin/bash
# more http://sekysu.blogspot.com


for i in $(ls arquivos_*.txt); do
cat "$i" | expand | tr -s " " | while read line; do
fld=$(echo $line | cut -d ' ' -f 4)

if [ $fld -gt 90 ]; then
echo $line
fi
done
done >>/tmp/saida.txt
column -t -c4 /tmp/saida.txt
rm -f /tmp/saida.txt


12. Simples

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/08/2011 - 13:58h

Jogue a saida num arquivo texto. E depois formate com "column"



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts