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
# ----------------------------------------------------------------------------
# Retira as linhas repetidas, consecutivas ou não.
# Obs.: Não altera a ordem original das linhas, diferente do sort|uniq.
#
# Uso: zzuniq [arquivo(s)]
# Ex.: zzuniq /etc/inittab
# cat /etc/inittab | zzuniq
#
# Autor: Aurelio Marinho Jargas, www.aurelio.net
# Desde: 2002-06-22
# Versão: 2
# Licença: GPL
# ----------------------------------------------------------------------------
zzuniq ()
{
zzzz -h uniq "$1" && return

# Nota: as linhas do arquivo são numeradas para guardar a ordem original

# Arquivos via STDIN ou argumentos
zztool file_stdin "$@" |
cat -n | # Numera as linhas do arquivo
sort -k2 -u | # Ordena e remove duplos, ignorando a numeração
sort -n | # Restaura a ordem original
cut -f 2- # Remove a numeração

# Versão SED, mais lenta para arquivos grandes, mas só precisa do SED
# PATT: LINHA ATUAL \n LINHA-1 \n LINHA-2 \n ... \n LINHA #1 \n
# sed "G ; /^\([^\n]*\)\n\([^\n]*\n\)*\1\n/d ; h ; s/\n.*//" $1
}

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

r692 by aureliojargas on Mar 29, 2012   Diff
zzuniq: agora aceita mais de um
arquivo.
r669 by aureliojargas on Mar 28, 2012   Diff
lint: removendo espaços inúteis. Parte
2.
r655 by aureliojargas on Mar 23, 2012   Diff
s/Aurélio/Aurelio/ *
All revisions of this file

File info

Size: 1057 bytes, 30 lines
Powered by Google Project Hosting