shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Alguma forma de rolar a leitura de um arquivo todo?


From: Kurt Kraut
Subject: Re: [shell-script] Alguma forma de rolar a leitura de um arquivo todo?
Date: Mon, 9 Feb 2009 12:27:32 +0000

Aloha,


Obrigado MrBiTS e Flavio. Nesse caso que mostrei sim, quero adicionar
AS no inicio de cada linha, mas foi só um exemplo próximo do que
preciso que mostrei. Ainda assim tenho a necessidade cotidiana de ler
arquivos gigantescos linha por linha, interpretá-las e processá-las.

Apesar do sed se aplicar a adesão do termo AS no início de cada linha,
para meus outros usos que tenho enfrentado baixa performance com
head+tail, o sed não dá conta. Por isso estou a procura dos mais
diversos métodos para ler linha a linha um arquivo e executar uma ação
a cada linha.

Ainda estou aberto a mais sugestões se alguém conseguir pensar numa.


Agradeço pela atenção de todos,


Kurt Kraut

2009/2/9 Flavio Junior <address@hidden>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Não entendi bem.. mas me parece que o que tu quer é adicionar um "AS"
> no inicio de todas as linhas?
>
> Não poderia fazer algo como:
>
> # sed 's/^/AS/' arquivo.log > list05.txt
>
> Se por acaso tu só quer da primeira linha até auqele numero que definiu ali:
>
> # sed '1,33486s/^/AS/' arquivo.log > list05.txt
>
> Desculpe se não entendi o que quer.
>
> - --
>
> Flávio do Carmo Jùnior aka waKKu
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (MingW32)
> Comment: http://getfiregpg.org
>
> iEYEARECAAYFAkmQG4wACgkQgyuXjr6dyks12wCdHhBat2li4AhRbOsL0ByIimG2
> LiYAniSRHp8YMRoXlqfzqpHTHkblj5cm
> =R46p
> -----END PGP SIGNATURE-----
>
> 2009/2/9 MrBiTS <address@hidden>:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Kurt Kraut wrote:
>>> Aloha,
>>>
>>> Eu tenho feito muitos trabalhos em que preciso que o script leia linha
>>> por linha de um log e a interprete. A forma que tenho feito o trabalho
>>> é essa:
>>>
>>>
>>> i=1
>>> while [ $i -le 33486 ]
>>> do
>>> line="$(head -$i arquivo.log|tail -1)"
>>> echo AS$line >> list05.txt
>>> i=`expr $i + 1`
>>> done
>>>
>>>
>>> Onde arquivo.log tem 33486 linhas. Este script levou 8min58sec para
>>> ser executado em um servidor ocioso. Acompanhando o tail -f list05.txt
>>> vi que a escrita era em rajadas. Toda a performance me pareceu
>>> bastante insatisfatória.
>>>
>>> Alguém me recomenda uma forma mais eficiente de ler um arquivo linha a
>>> linha ?
>>>
>>>
>>> Desde já agradeço a atenção,
>>
>> Um arquivo de 33.000 linhas é nada. Leio arquivos cujo tSeu problema não
>> está na leitura do arquivo em sí.amanho vai na ordem dos
>> Gigabytes em instantes.
>>
>> Veja que você faz um head para pegar a linha que você quer e um expr para
>> calcular. Eu aconselho você a usar um outro recurso para
>> ler os arquivos:
>>
>> LINHA=0
>> while read LINE ; do
>> echo AS$LINHA
>> done < arquivo.log >> list05.txt
>>
>> Isso já mata o head, o redirecionamento e você não tem que incrementar seu
>> contador de linha.
>>
>> - --
>>
>> Um abraço
>>
>> .0. MrBiTs - address@hidden
>> ..0 GnuPG -
>>
>> http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
>> 000 http://www.mrbits.com.br
>>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.6 (GNU/Linux)
>>
>> iD8DBQFJkBUarDdxWm3R8YYRAotcAJ95UCSHEwuGXBbPuOBLxHpaP/LZrQCfWPWs
>> MVleB+zAUaKi5UikWGGPL4I=
>> =WcMK
>> -----END PGP SIGNATURE-----
>>
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]