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

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

Re: [shell-script] Re: [shell-script] Re: [shell-script] Re: [shell-scri


From: T.Collons
Subject: Re: [shell-script] Re: [shell-script] Re: [shell-script] Re: [shell-script] Re: Separar os dígitos de um número
Date: Sun, 9 Dec 2018 11:57:39 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.3

Caro Itamar e Paulo


Muito obrigado pelas respostas.

Vou dar uma olhada no info sed



El 8/12/18 a les 0:09, Fernando Mercês address@hidden [shell-script] ha escrit:
 
Como sempre, nessa lista, muito mais que eu esperava. :)

Muito obrigado, amigos!


On Fri, Dec 7, 2018 at 4:16 PM phfbettega address@hidden [shell-script] <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 [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 [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 [shell-script] wrote:
>> > Acabei de matar um unicórnio:
>> >
>> > $ echo 2147483647 | 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>
>> >
>> >
>> > On Fri, Dec 7, 2018 at 2:11 AM Fernando Mercês <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
>> > 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 | 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>
>> >
>> >
>> > ----------------------------------------------------------
>> > Enviado por: =?UTF-8?Q?Fernando_Merc=C3=AAs?= <address@hidden>
>> > ----------------------------------------------------------
>> > Responder através da web
>>
> --
>
>
>
> Pere
>
> 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>
> ----------------------------------------------------------
> Responder através da web

--



Pere

address@hidden




------------------------------------

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.




reply via email to

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