[Ubuntu-BR] Iterando sobre arquivos com shellscript

Humberto Fraga xisberto em gmail.com
Segunda Janeiro 14 17:13:11 UTC 2013


Luciano,

provavelmente em um grupo de Shellscript você vai encontrar alguma ajuda
mais precisa, mas vou mostrar aqui o que pude investigar com pouco tempo.

No shell, você não consegue exatamente iterar pelas linhas de um arquivo.
Mas é possível ler apenas determinadas linhas. Dessa forma, você vai poder
usar uma variável como controle para saber em que linha você está.

Fiz um script rudimentar e coloquei no pastebin:
http://pastebin.com/dRDHkk90 (ele apenas tenta fazer o que você descreveu,
mas não incluí nenhum teste para saber se os parâmetros fornecidos são
válidos).


Em 14 de janeiro de 2013 13:25, luciano de souza <luchyanus em gmail.com>escreveu:

> Caros,
> Desejo criar um Shellscript que realize as seguintes tarefas:
> 1. Lê um arquivo de texto;
> 2. Separa-o em uma coleção de arquivos com número determinado de linhas;
> 3. Coloca no início de cada arquivo, o nome do arquivo-pai sem a
> extensão, mas seguido de um número sequencial.
>
> Este é o início para que consiga preparar um arquivo de texto para
> conversão em audiolivro utilizando a síntese de voz do Espeak. Suponha
> o seguinte comando:
>
> audiobook -i "Os miseráveis.txt" -s 200
>
> Como resultado ele deveria produzir:
>
> Os miseráveis01.txt
> Os miseráveis02.txt
> Os miseráveis03.txt
>
> No início, por exemplo, de "os miseráveis03.txt", teríamos:
>
> Os miseráveis03
>
> {continuação do texto de Os miseráveis02}
>
> O que basicamente preciso saber para construir este script? Ler
> arquivos, linha por linha verificando se um contador é igual ao
> tamanho passado como parâmetro.
>
> Entretanto, não sei como iterar sobre as linhas de um arquivo
> utilizando Shellscript. Se fosse Pascal, seria algo mais ou menos
> assim:
>
> var
> f: text;
> s: string;
> I: integer;
>
> begin
> assign(f, 'Os miseráveis.txt');
> reset(f)
> i := 0;
> while not eof(f) do
> begin
> readln(f, s);
> { Fazer alguma coisa com "s"}
> inc(i);
> end;
> close(f);
> end.
>
> Muito provavelmente necessitarei de um bocado de tentativas até que
> tenha o meu script de audiolivros pronto. O que desejo é uma
> orientação sobre o que estudar afim de conseguir gerar este script.
> Não estou certo se a minha pergunta é apropriada para este grupo, mas
> não conheço grupos sobre shellscript.
> Luciano
>
> --
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>
> Lista de discussão Ubuntu Brasil
> Histórico, descadastramento e outras opções:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
>



-- 
Humberto Fraga
http://lixaonerd.wordpress.com

"Sur la tuta tero estis unu lingvo kaj unu parlomaniero." - Gn 11,1



More information about the ubuntu-br mailing list