|
From: | Sidney Souza |
Subject: | Re: [Bulk] Re: [shell-script] Preenchimento com espaços a esquerda |
Date: | Mon, 10 Aug 2015 17:47:17 -0300 |
Leandro
Deixe me explicar o porque levando em consideração experiências anteriores que tive.O Sidney deu uma resposta que a priori parece ser a mais lógica se nos prendermos exclusivamente ao exemplo que forneceu.Todavia imagine que no lugar de cachorro fosse "lobo guará", teríamos esses problemas:1. O espaço no nome daria uma contagem errada dos campos a ser usado pelo awk, por isso fiz a opção de colocar como caractere separador o pipe(|), que não limita o texto que pode ter espaço.2. Caracteres multibytes, dependendo da versão do awk dão uma contagem errada dos caracteres, e por isso não usei a função built-in do awk "substr()", e nisso o sed contorna muito bem, sendo usado para a colocação do caractere separador antes de enviar ao awk.3. Mas o awk usa como separador de campo uma expressão regular " -F '[|][ ]*' ", que no final quer dizer um pipe seguido de espaços opcionalmente. Para não ter 2 regras, o sed que antecedeu colocou o separador a frente do primeiro campo, o que o transforma no segundo campo. Poderia ter feito " -F '(^ *)|([|][ ]*)' ", mas acho que poderia ser mais confuso.Com isso, automaticamente faz-se um ltrim de cada campo, eliminando os espaços excedente à esquerda, e possibilitando formatar corretamente no awk.Como não sei qual o tipo de informação que pode aparecer, e nem a codificação de caracteres do arquivo de entrada, fui numa solução mais portável possível, sem depender muito do shell que usa, e usando recursos mais simples do sed e awk.Essa solução funciona se não houver nenhum caractere pipe(|) no texto. Se houver troque por um caractere que não faz parte do texto.A explicação foi suficiente?[]'sItamar
[Prev in Thread] Current Thread [Next in Thread]
- Re: [shell-script] Preenchimento com espaços a esquerda, (continued)
- Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Alfredo Casanova, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, diramos, 2015/08/07
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/08
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, itamarnet, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, itamarnet, 2015/08/10
- Re: [Bulk] Re: [shell-script] Preenchimento com espaços a esquerda, Sidney Souza <=
- Re: [Bulk] Re: [shell-script] Preenchimento com espaços a esquerda, Sidney Souza, 2015/08/10
- Re: [Bulk] Re: [shell-script] Preenchimento com espa ços a esquerda, itamarnet, 2015/08/10
- Re: [Bulk] Re: [Bulk] Re: [shell-script] Preenchimento com espa ços a esquerda, Sidney Souza, 2015/08/10
- Re: [shell-script] Preenchimento com espaços a esquerda, Leandro Valiengo, 2015/08/11
- Re: [Bulk] Re: [shell-script] Preenchimento com espaços a esquerda, Sidney Souza, 2015/08/10
- Prev by Date: Re: [shell-script] Preenchimento com espaços a esquerda
- Next by Date: Re: [shell-script] bash: 08: valor muito grande para esta base de numeração (error token is "08")
- Previous by thread: Re: [shell-script] Preenchimento com espaços a esquerda
- Next by thread: Re: [Bulk] Re: [shell-script] Preenchimento com espaços a esquerda
- Index(es):