My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# ----------------------------------------------------------------------------
# Conta o número de vezes que uma palavra aparece num arquivo.
# Obs.: É diferente do grep -c, que não conta várias palavras na mesma linha.
# Opções: -i ignora a diferença de maiúsculas/minúsculas
# -p busca parcial, conta trechos de palavras
# Uso: zzcontapalavra [-i|-p] palavra arquivo(s)
# Ex.: zzcontapalavra root /etc/passwd
# zzcontapalavra -i -p a /etc/passwd # Compare com grep -ci a
# cat /etc/passwd | zzcontapalavra root
#
# Autor: Aurelio Marinho Jargas, www.aurelio.net
# Desde: 2003-10-02
# Licença: GPL
# ----------------------------------------------------------------------------
zzcontapalavra ()
{
zzzz -h contapalavra "$1" && return

local padrao ignora
local inteira=1

# Opções de linha de comando
while [ "${1#-}" != "$1" ]
do
case "$1" in
-p) inteira= ;;
-i) ignora=1 ;;
* ) break ;;
esac
shift
done

# Verificação dos parâmetros
[ "$1" ] || { zztool uso contapalavra; return 1; }

padrao=$1
shift

# Contorna a limitação do grep -c pesquisando pela palavra
# e quebrando o resultado em uma palavra por linha (tr).
# Então pode-se usar o grep -c para contar.
# Nota: Arquivos via STDIN ou argumentos
zztool file_stdin "$@" |
grep -h ${ignora:+-i} ${inteira:+-w} -- "$padrao" |
tr '\t./ -,:-@[-_{-~' '\n' |
grep -c ${ignora:+-i} ${inteira:+-w} -- "$padrao"
}

Change log

r710 by aureliojargas on Mar 29, 2012   Diff
SEGURANÇA: $1 colocado entre aspas na
chamada padrão zzzz -h de todas as
funções.
Go to: 
Sign in to write a code review

Older revisions

r691 by aureliojargas on Mar 29, 2012   Diff
lint: padronizado o comentário para a
chamada de zztool file_stdin.
r668 by aureliojargas on Mar 28, 2012   Diff
lint: removendo espaços inúteis.
r655 by aureliojargas on Mar 23, 2012   Diff
s/Aurélio/Aurelio/ *
All revisions of this file

File info

Size: 1449 bytes, 47 lines
Powered by Google Project Hosting