Grande Julio! 2010/4/7 Julio C. Neves: > Ô Andrea, cuméque uma jogadora de xadrez pode achar a resposta do Tiago > complicada? A solução do Tiago está ótima! Ele resolveu um problemão em 2 > linhas... A linha seguinte, que ele não escreveu, seria um grep -lF "1. d4 > d5 2. c4 c6 3. e3" split_* > > Esta linha produziria os nomes dos arquivos que possuem a cadeia que vc > procura. Se vc quiser concatenar todos em um só arquivo, troque-a por: > > cat $(grep -lF "1. d4 d5 2. c4 c6 3. e3" split_*) > ArqConcatenado
Não é que a solução dele seja complicada, é que eu achei que haveria uma forma mais direta, sem precisar criar tantos arquivos - 8662 aqui, considerando as partidas do último mês. :) Eu imaginava alguma mágica no sed, hehe. Mas a solução ajudou, sim, com certeza! Com seu empurrão final, então, perfeito! Os arquivos PGN se chamam twicXXX.pgn, de 1 a 804. Então, montei o script de forma que o usuário possa especificar o intervalo desejado (no exemplo abaixo, eu busquei somente partidas do último mês). E 15 jogos de meu interesse foram encontrados. :-) Obrigada!! Abraço, Andrea VB andre...@zugzwang:~/Documentos/chess$ cat select.sh #!/bin/bash usage () { echo "Usage: $0 <firstTWIC> <lastTWIC> <opening>" 1>&2 } i=$1 ; test -z "$i" && { usage exit 1 } f=$2 ; test -z "$f" && { usage exit 1 } opening=$3 ; test -z "$opening" && { usage exit 1 } # The format of the file is twicXXX.pgn, but it may change... prelink="twic" poslink=".pgn" while [ $i -le $f ] do link=${prelink}${i}${poslink} awk '/\[Event \"/{ i++; } { print >> "split_" i;}' $link cat $(grep -lF "${opening}" split_*) >> interesse.pgn rm split* let "i = i + 1" done exit 0 $ time ./select.sh 801 804 "1. d4 d5 2. c4 c6 3. e3" real 0m2.494s user 0m1.540s sys 0m0.896s