Ajuda [RESOLVIDO]

1. Ajuda [RESOLVIDO]

Paola Ramos
paolagframos

(usa Ubuntu)

Enviado em 19/10/2011 - 09:50h

Tenho um arquivo chamado "clim-input" que possui 105120 linhas de dados de entrada sendo ano, temperatura e tc, para rodar um modelo de agricultura.

Preciso mudar dados de temperatura para +2 em uma rodada e -2 em uma rodada.

Óbvio que não vou fazer isso manualmente em 105120 linhas!!!!!! Estou tentando fazer um shell pra isso, porém, não está dando muito certo a impressão dos mesmos pois ele só imprime 1 linha de valor na saída.

Segue o código:

echo ""
echo -e " {TTEXTO}33[0;34m Gerando Arquivo {TTEXTO}33[0m"

cat clim-input | cut -c35-36 > lista #pega os dados do arquivo clim-input e gera em lista

var=2 #valor de atribuicao para soma e subtracao dos dados do arquivo lista
for i in $(cat lista | head -n 105120) # pega todas as linhas do arquivo lista
do
soma=$(($i+$var)) #faz a soma dos dados do arquivo lista + 2
subt=$(($i-$var)) #faz a soma dos dados do arquivo lista - 2
done

echo "$soma" > soma #gera arquivo soma
echo "$subt" > subtracao #gera arquivo subtracao


echo ""
echo -e " {TTEXTO}33[0;31m Arquivo gerado com sucesso!! {TTEXTO}33[0m "
echo ""

Quando executo o mesmo, ele imprime o seguinte:

somente a soma e subtração da ultima linha do arquivo lista e não todas como deveria imprimir.

Alguém me ajuda, por favor?!


  


2. MELHOR RESPOSTA

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 19/10/2011 - 12:55h

Sem mudar seu script, mas se eu entendi seu problema ... tenta isso:

echo ""
echo -e " {TTEXTO}33[0;34m Gerando Arquivo {TTEXTO}33[0m"

cat clim-input | cut -c35-36 > lista #pega os dados do arquivo clim-input e gera em lista

var=2 #valor de atribuicao para soma e subtracao dos dados do arquivo lista
for i in $(cat lista | head -n 105120) # pega todas as linhas do arquivo lista
do
soma=$(($i+$var)) #faz a soma dos dados do arquivo lista + 2
subt=$(($i-$var)) #faz a soma dos dados do arquivo lista - 2
echo "$soma" >> soma #gera arquivo soma
echo "$subt" >> subtracao #gera arquivo subtracao
done



echo ""
echo -e " {TTEXTO}33[0;31m Arquivo gerado com sucesso!! {TTEXTO}33[0m "
echo ""

3. Re: Ajuda [RESOLVIDO]

Rafael Poletto
polettin

(usa Debian)

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

só para confirmar e nao falar besteira

voce precisa alterar os valores do arquivo que tem 105120 linhas ?

se for isso, voce pode tentar o seguinte

cat <arquivo> | tr -2 +2 > arquivo_novo

acho que com isso voce ja vai conseguir fazer com que ele converta os valores -2 para +2


4. Re: Ajuda [RESOLVIDO]

Paola Ramos
paolagframos

(usa Ubuntu)

Enviado em 19/10/2011 - 10:16h

O arquivo <clim-input> possui 105.120 linhas assim:

2001 1 0 2.194 28.408 0.000 0.000 443.084 60.423

Eu preciso alterar somente os dois primeiros numeros dos dados de temperatura: 28 (5ª coluna).

Por isso o comando <cat clim-input | cut -c35-36 > lista> para gerar a lista somente dos numeros que eu preciso mudar para a primeira rodada +2 graus e para a segunda rodada, -2 graus.

Depois disso, eu preciso jogar os valores de soma e subt para esse arquivo <clim-input>.


5. Re: Ajuda [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 19/10/2011 - 13:05h

agora se você precisa do resto da linha poderia ser algio do tipo:

awk '{ print $1,$2,$3,$4,$5 - 2,$6,$7,$8,$9}' clim-input > subtrai
awk '{ print $1,$2,$3,$4,$5 + 2,$6,$7,$8,$9}' clim-input > soma

tem diversos outros jeitos tb ... mas ve se é isso. Ok


6. Re: Ajuda [RESOLVIDO]

Paola Ramos
paolagframos

(usa Ubuntu)

Enviado em 19/10/2011 - 13:22h

fdmarp

Deu certinho os 2 que vc me passou....

TKS!!!!!!!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts