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

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

Re: [shell-script] help com manipulacao de arquivos


From: Thobias Salazar Trevisan
Subject: Re: [shell-script] help com manipulacao de arquivos
Date: Thu, 12 Jun 2003 12:35:43 -0300 (BRT)

ae joao paulo,

On Wed, 11 Jun 2003, Joao Paulo Muller da Silva wrote:

>  Seguinte, eu tenho um arquivo com varias palavras e agora que quero
>  ver se essas palavras estao em um texto, tambem se estiver queria
>  contar qts vezes essas palavras aparecem.

podemos usar o sed.

prompt> cat ./conta_palavra.sh
#!/bin/bash
#
# $1 = palavra
# $2 = arquivo

sed -n "
# se for a primeira linha zeramos o contador.
# o contador fica sempre no reserva
1{;x;s/^/0/;x;}
# se for a palavra que procuramos fizemos
/\b$1\b/{
        :c
        s/\b$1\b//;ta
# substituimos a palavra por nada, se ocorreu sucesso na substituição
# pulamos pro label a, senão, vamos pro label b
        bb
# chegamos aqui se ocorreu sucesso na substituição. Assim pegamos o valor
# que esta no reserva e fizemos valor + 1
        :a
        x
# aqui comeca o algoritmo pra incrementar o numero
        :p
        s/9\(_*\)\$/_\1/;tp
        s/^\(_*\)\$/0\1/;s/ \(_*\)\$/0\1/
        s/8\(_*\)\$/9\1/;s/7\(_*\)\$/8\1/
        s/6\(_*\)\$/7\1/;s/5\(_*\)\$/6\1/
        s/4\(_*\)\$/5\1/;s/3\(_*\)\$/4\1/
        s/2\(_*\)\$/3\1/;s/1\(_*\)\$/2\1/
        s/0\(_*\)\$/1\1/;s/_/0/g
# como a palavra pode aparecer mais de 1x na mesma linha, pulamos pro label
# c pra ver se existe mais
        x;tc
}
:b
# se for última linha, imprime o que tem no reserva (o contador)
\${x;p;}" < $2

#######################################################

testando

prompt> cat lixo
um
dois
um
tres

prompt> ./conta_palavra.sh sed lixo
0
prompt> ./conta_palavra.sh um lixo
2
prompt> ./conta_palavra.sh dois lixo
1
prompt> ./conta_palavra.sh o lixo
0

se quiser pegar sub-\?palavras retire o borda \b

falow

thobias
-------
echo 9446046325380026818553633794429812592304650P | dc
-------
http://www.lcp.coppe.ufrj.br/~thobias

____________________________
|
| Against - HTML Mail
| Against - MS ATTACHMENTS
|
----------------------------



reply via email to

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