[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] limitar caracter em string (HARDCORE)
From: |
Eliphas Levy Theodoro |
Subject: |
Re: [shell-script] limitar caracter em string (HARDCORE) |
Date: |
Thu, 07 Jul 2005 12:19:55 -0300 |
User-agent: |
Mozilla Thunderbird 1.0.2 (Windows/20050317) |
Jorge Pereira escreveu:
opt_id="eu///tenho///um/////////////dir"
e quero que saia apenas "eu/tenho/um/dir"
tipo, deixar apenas um caracter caso tiver repetido...
aaaaa troque por a
tiver ,,,,,,,,,,, deixe apenas ,
1) Qual que é o lance de colocar (HARDCORE) em teus emails? Meu antispam
animou-se a classificar você no meio dos spams de sexo da vida. E
normalmente eu não fico olhando as mensagens de spam, mas como hoje tá
meio devagar... ';)
2) Não é hardcore. Uma simples procura no google resolve.
http://www.google.com.br/search?q=remove+repeated+character
me retornou no terceiro match: a man page do "tr".
-s --squeeze-repeats
replace each input sequence of a repeated character that is listed in
SET1 with a single ocurrence of that character
Então, (também listado no man tr) você quer qualquer caractere, pode
usar: "[:print:] all printable characters, including space"
$ echo blaaaaa,,,,lala//ugaabuga | tr -s [:print:]
bla,lala/ugabuga
Claro que você pode usar expressões regulares, um sed também resolve.
Mas é tiro de canhão, a não ser que você tenha caracteres de comando no
texto.
$ echo blaaaaa,,,,lala//ugaabuga | sed 's/\(.\)\1\+/\1/g'
bla,lala/ugabuga
[ ]'s
--
Eliphas