Oi Alfredo. Valeu a dica do numfmt. Não conhecia. Fiz uns testes rápidos mas
não rolou:
~ $ numfmt --grouping 1234567946548,2
numfmt: invalid suffix in input: ‘1234567946548,2’
~ $ numfmt --grouping 1234567946548.2
1234567946548.2
~ $ printf "%'.3f\n" 1234567946548,2
-bash: printf: 1234567946548,2: invalid number
0.000
~ $ printf "%'.3f\n" 1234567946548.2
1234567946548.200
~ $ numfmt --grouping 2147483647
2147483647
~ $ printf "%'.3f\n" 2147483647
2147483647.000
De qualquer forma, vou ler o manual com calma depois.
Muito obrigado e um abraço!
Att,
Fernando Mercês <https://twitter.com/mer0x36> | menteb.in <http://menteb.in>
On Wed, Jan 30, 2019 at 3:51 PM Alfredo Casanova address@hidden <mailto:address@hidden>
[shell-script] <address@hidden <mailto:address@hidden>> wrote:
__
Sei que to bem atrasado na thread, mas já viram o comando numfmt?
*numfmt --grouping 1234567946548,2*
*1.234.567.946.548,2*
ele também tem diversas outras funcionalidades, vale uma lidinha no man.
Outra solução seria printf puro
*printf "%'.3f\n" 1234567946548,2 *
*1.234.567.946.548,200*
ambos vão aplicar suas configurações de locale para funcionar
On Fri, Dec 7, 2018 at 9:10 PM Fernando Mercês address@hidden
<mailto:address@hidden> [shell-script]
<address@hidden <mailto:address@hidden>> wrote:
__
Como sempre, nessa lista, muito mais que eu esperava. :)
Muito obrigado, amigos!
Att,
Fernando Mercês <https://twitter.com/mer0x36> | menteb.in
<http://menteb.in>
On Fri, Dec 7, 2018 at 4:16 PM phfbettega address@hidden
<mailto:address@hidden>
[shell-script] <address@hidden <mailto:address@hidden>> wrote:
__
Olá T.Collons, no lugar do man sed, dê uma olhada no info sed, acho
mais completo
e mais detalhado com exemplos comentados.
No sed do sourceforge:
:a
# O comando ':' cria uma marcação com o nome 'a', marca o ponto de
volta para algum
# comando de loop (b, t ou T).
s/\B[0-9]\{3\}\>/ &/
# A borda \B casa dois caracteres de palavra juntos, então essa ER
casa uma palavra
# de quatro dígitos, o primeiro é a borda \B seguida de três
dígitos seguidos de
# outra borda. Na primeira passada, o comando vai casar os três
últimos dígitos no fim
# da linha e substituir por <espaço> e os três dígitos casados.
# Na segunda passada, pela ganância da ER, os últimos três dígitos
seriam casados
# novamente, mas aí entra em cena a \B, que só casa os três dígitos
se houver outro
# caracter de palavra antes.
# Essa ER pode ser s/([0-9])([0-9]{3})\>/\1 \2/ mas nesse caso
usando grupos.
#
# Não uso muito as bordas, então não sei se essa explicação está
boa rs.
# O info sed tem isso a respeito:
'\B'
Matches everywhere but on a word boundary; that is it matches if
the character to the left and the character to the right are either
both "word" characters or both "non-word" characters.
$ echo "abc %-= def." | sed 's/\B/X/g'
aXbXc X%X-X=X dXeXf.X
'\>'
Matches the end of a word.
$ echo "abc %-= def." | sed 's/\>/X/g'
abcX %-= defX.
ta
# Aqui o comando 't' confere se o comando 's' alterou o espaço
padrão.
# Se alterou, então pula para a marcação 'a'. Quando a ER falhar e
não casar
# mais nada na linha, o comando 's' não vai fazer nenhuma alteração
e o
# pulo para 'a' não será dado.
Abraços Paulo
sed -r ':a;/^[0-9]{,3} /q;s/[0-9]{3}($| )/ &/;ta'
On 07/12/2018 11:55, 'T.Collons' address@hidden
<mailto:address@hidden> [shell-script]
wrote:
> Hola a todos
>
>
> Necesitaría que alguien me explicara la sintaxis de la orden de sed, con
el "man sed" no
consigo entenderlo.
>
> voy a explicar lo que yo entiendo.
>
> *:a* toma todo el conjunto de números
>
> *s/* comando de sed para substituir
>
> *\B[0-9]**\{3\} *toma solo grupos de 3 números
>
> *\>* no se para que sirve????
>
> *,& *substituirá el final del grupo de *\B[0-9]**\{3\} *por el
carácter anterior al Ampersand,
en este caso
> una coma.
> **
>
> *ta *Entiendo que la *a* se refiere al grupo de todos los
números, pero la *t* no entiendo
porque se usa.
>
>
> Gracias de antemano por la explicación
>
>
>
> **
>
> El 7/12/18 a les 5:57, phfbettega address@hidden
<mailto:address@hidden>
[shell-script] ha escrit:
>>
>> rev é uma mão na roda :)
>>
>> Tem um sed que faz isso
>>
>> gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'
>>
>> http://sed.sourceforge.net/sed1line.txt
>>
>> Abraços Paulo
>>
>> On 07/12/2018 02:17, Fernando Mercês address@hidden
<mailto:address@hidden>
[shell-script] wrote:
>> > Acabei de matar um unicórnio:
>> >
>> > $ echo 2147483647 <tel:(21)%204748-3647> | rev | sed 's/.../&
/g' | rev
>> > 2 147 483 647
>> >
>> > Algo menos deselegante? 😁
>> >
>> > Att,
>> >
>> > Fernando Mercês <https://twitter.com/mer0x36> | menteb.in
<http://menteb.in> <http://menteb.in>
>> >
>> >
>> > On Fri, Dec 7, 2018 at 2:11 AM Fernando Mercês <address@hidden
<mailto:address@hidden>
<mailto:address@hidden <mailto:address@hidden>>> wrote:
>> >
>> > Oi pessoal!
>> >
>> > Hoje tava checando uma falha que saiu no PolicyKit [1]
(aliás, atualizem seus sistemas ;-))
e pintou a
>> > dúvida de como fazer um número ser organizado com espaços
para melhor compreensão. Tipo:
>> >
>> > Entrada: 2147483647 <tel:(21)%204748-3647>
>> > Saída: 2 147 483 647
>> >
>> > Basicamente seria dizer que a cada três dígitos, de trás para
frente, seja colocado um espaço.
>> >
>> > Eu consigo fazer na ordem direta com o sed:
>> >
>> > $ echo 2147483647 <tel:(21)%204748-3647> | sed 's/.../& /g'
>> > 214 748 364 7
>> >
>> > Alguma ideia de como conseguir isso "de trás pra frente" de
forma rápida?
>> >
>> > Abraços!
>> >
>> > [1]
https://thehackernews.com/2018/12/linux-user-privilege-policykit.html
>> >
>> > Att,
>> >
>> > Fernando Mercês <https://twitter.com/mer0x36> | menteb.in
<http://menteb.in> <http://menteb.in>
>> >
>> >
>> > ----------------------------------------------------------
>> > Enviado por: =?UTF-8?Q?Fernando_Merc=C3=AAs?= <address@hidden
<mailto:address@hidden>>
>> > ----------------------------------------------------------
>> > Responder através da web
>>
> --
>
>
>
> Pere
>
> address@hidden <mailto:address@hidden> <mailto:address@hidden
<mailto:address@hidden>>
>
>
>
> <https://www.google.com/>
>
> ------------------------------------
>
> AVIS LEGAL
>
> Nota de confidencialitat: Aquest missatge podria contenir
missatges d'empresa i altre
informació confidencial
> tutelada per les lleis de Europea i altres estats, Si Vostè el
rep per error o sense ser una de
les persones
> esmenades a la capçalera, haurà de destruir-lo sense copiar-lo
ni revelar-l'ho o qualsevol
altre acció
> relacionada amb el contingut del missatge i notificar-ho per
correu electrònic a l'emissor del
missatge.
>
> Les persones o entitats que incompleixin els deures de
confidencialitat podran ésser
perseguides davant dels
> Tribunals de Justícia sota l'empar de la legislació civil, penal
i administrativa nacional i
internacional.
>
> Gracies per la seva cooperació.
>
> ------------------------------------
>
> LEGAL NOTICE
>
> Confidentiality notice: This mail may include business and other
confidential information
protected under the
> laws of and other territories. if you are not one of the
intended recipients of the message,
you are legally
> obliged to delete the message content. Furthermore, you are
kindly requested to report
immediately the
> incident to the sender.
>
> Breach of confidentiality duties is a serious criminal offence
in and other territories.
Offenders shall be
> legally prosecuted worldwide.
>
> Thank you for your cooperation.
>
>
>
>
> ----------------------------------------------------------
> Enviado por: "T.Collons" <address@hidden <mailto:address@hidden>>
> ----------------------------------------------------------
> Responder através da web
--------------------------------------------------------------------------------------------------------------
Enviado por: =?UTF-8?Q?Fernando_Merc=C3=AAs?= <address@hidden>
--------------------------------------------------------------------------------------------------------------
Responder através da web