help em shell script [RESOLVIDO]

1. help em shell script [RESOLVIDO]

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 03/08/2011 - 17:27h

Estou tentando criar um shell scripts que lê um arquivo.txt
Por exemplo meu arquivo de entrada tem 4 colunas

Queria criar um shell que caso a condição satisfacesse coluna 4 fosse > 90 me traria a linha toda.
USERS 12.877,50 12.869,44 100
TLFNC_DATA_MEDIUM 510,00 504,06 99
TBL_REORG_DATA 21.860,00 15.396,31 70

Eu ja tendei awk, if then else, while read Linha; do e não consegui criar.

grato


  


2. MELHOR RESPOSTA

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 04/08/2011 - 15:04h

Faça uma alteracao no script:

Troque a linha:
cat "$1" | while read line; do

Por:
cat "$1" | expand | tr -s " " | while read line; do

Acho que deu erro pq tem tabulacoes no arquivo de entrada.

3. Re: help em shell script [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 03/08/2011 - 17:38h

#!/bin/bash

if [ $# -lt 1 ]; then
echo "Usage: $0 [input file]"
exit 1
fi

cat "$1" | while read line; do
fld=$(echo $line | cut -d ' ' -f 4)

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

exit 0



4. help em shell script

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 04/08/2011 - 13:30h

Obrigado pelo retorno

So leigo no assunto, tira uma dúvida aonde este script lê o arquivo de entrada. Para eu rodar é só executar ./script.sh ou tenho que alterar dentro dele e adicionar o nome de arquivo e ai então executar ./script.sh

Eu executei na mão e deu erro. conforme abaixo.

[oracle@srvtgoracle64prd LOGSTBS]$ ./apaga5.sh
Usage: ./apaga5.sh [input file]





5. Re: help em shell script [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 04/08/2011 - 14:18h

O arquivo a ser lido entra como parâmetro.

Por exemplo:
Se o arquivo de entrada estiver em "/tmp/arquivo.txt", execute:

./apaga5.sh /tmp/arquivo.txt


6. Re: help em shell script [RESOLVIDO]

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 04/08/2011 - 15:01h

Obrigado pelo retorno.

Primeiramente eu rodei o script deu erro abaixo:

./apaga5.sh: line 11: [: 100: unary operator expected
./apaga5.sh: line 11: [: 99: unary operator expected
./apaga5.sh: line 11: [: 71: unary operator expected

verifiquei o erro no google e modifiquei.

Rodei novante ./script.sh /tmp/arquivo.txt e me trouxe todos os dados novamente.
Queria que trousesse somente quando satisfacesse a condição ( a 4 coluna que fosse > 90)


USERS 12.877,50 12.869,44 100
TLFNC_DATA_MEDIUM 510,00 504,06 99
TBL_REORG_DATA 21.860,00 15.462,75 71
TLFNC_DATA_SMALL 27.305,00 16.096,25 59
TLFNC_INDEX_MEDIUM 1.746,00 927,56 53
TLFNC_INDEX_LARGE 1.437,00 570,69 40
TBL_CAB_PEDIDO_SAIDA 4.096,00 1.559,69 38

grato


7. help em shell script

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 04/08/2011 - 15:29h

Fiz a modificação para cat "$1" | expand | tr -s " " | while read line; do
Rodei novamente e trouxe tudo novamente.


8. Re: help em shell script [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 04/08/2011 - 15:33h

Cara, deve ser formatacao do teu arquivo. Deve ter algum caracter estranho que ta quebrando o cut.

Faz o seguinte: me manda por e-mail o arquivo que tu tah testando ae, que dai posso consertar o script aqui.


9. help em shell script

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 04/08/2011 - 15:38h

Hebang

Funcionou
Obrigado pela ajuda. Esta estourando a paginação e estava quebrando a linha.


Obrigado novamente.


10. help em shell script

sergio de oliveira
sergio.mso

(usa Red Hat)

Enviado em 04/08/2011 - 17:21h

Hebang

Ha possibilidade que neste script que em vez de eu dar ./scripts.sh arquivo.txt, adicionar o nome do arquivo dentro do script?


11. Re: help em shell script [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 04/08/2011 - 23:46h

Troca o $1 pelo caminho do arquivo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts