[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-----