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

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

Re: [shell-script] Dividir arquivo em blocos


From: Flavio Torres
Subject: Re: [shell-script] Dividir arquivo em blocos
Date: Sun, 12 Aug 2007 12:17:59 -0300
User-agent: Thunderbird 2.0.0.6 (Windows/20070728)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Marcelo G. Dias wrote:
> Pessoal,
>
> Estou ficando velho mesmo, minha memória já está falhando, há tempos
> não preciso enviar nenhuma pergunta, mas desta vez apanhei ... vamos
> ao que interessa !!!!
>
> Tenho uma bíblia em formato TXT, sendo que todo capitulo tem o
> seguinte formato:
>
> »LIVRO [CAP1]
> texto 01
> texto 02
> ...
> »LIVRO [CAP2]

Obviamente existe soluções melhores, mas acabei por brincar com array.

A idéia é simples, imprimir o que esta entre as linhas X,Y, para isto
sed '1,10!d'.

Para determinar as linhas que demarcam o bloco: utilizo o grep para
numera-las, e subtraio 1 para pegar corretamente o segundo bloco, o
resto é tratamento de erros.

#!/bin/bash
# uso: divide_arquivo PALAVRA arquivo

CAPITULO=( ${CAPITULO[@]} `grep -En $1 $2 | cut -d: -f1`)

for ((i=0;i<${#CAPITULO[@]};i++));do
        P1=${CAPITULO[$i]}
        if [[ ${CAPITULO[$i+1]} ]];then
                P2=`expr ${CAPITULO[$i+1]} - 1`
        else
                P2=`grep -En '[0-9]*' $2 | tail -n 1 | cut -d: -f1`
        fi
                sed ''${P1}','${P2}'!d' $2
done


Um abraço.


- --

/"\
\ /  Flavio Torres
 X   ASCII RIBBON CAMPAIGN - AGAINST HTML MAIL
/ \

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
 
iD8DBQFGvySmNRQApncg294RAoxQAKDav1r7+OkvkvO07s+FbDcelEaV8gCfcaQa
H3jGcVHN2r6+Gnr6+Rp4dr4=
=mIKX
-----END PGP SIGNATURE-----



reply via email to

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