Discussion:
[shell-script] Formatação
Eldimar Souza eldimax@gmail.com [shell-script]
2017-02-09 16:01:04 UTC
Permalink
Bom dia senhores, tenho um script que captura os dados e gera em um arquivo
txt, porem esse arquivo vem dessa forma:

"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""

Queria formatar ele dessa forma:

Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""

Não preciso que os dados sejam salvos tratados, posso pegar o txt original
e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034

"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"

ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
Sidney Souza king.sidney@yahoo.com.br [shell-script]
2017-02-09 16:54:29 UTC
Permalink
você pode usar o comando printf para isso

------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt original
e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
Reivson Lopes reivsonlopes@gmail.com [shell-script]
2017-02-09 17:06:13 UTC
Permalink
Usei o tr para trocar as aspas e virgula por espaço.


cat arquivo.txt | tr "\"\"\,\"\"" " " > arquivo2.txt


Não sei se server para você assim.
Post by Sidney Souza ***@yahoo.com.br [shell-script]
você pode usar o comando printf para isso
------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt
original e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Att,
Reivson Lopes.


Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
E-mail: ***@itep.br
Gtalk: ***@gmail.com
Eldimar Souza eldimax@gmail.com [shell-script]
2017-02-10 11:43:36 UTC
Permalink
Bom dia Senhores, desculpem a demora no retorno, resolvi com a dica do
nossa amigo Itamarnet, que foi:

$ sed 's/""*//;s/"*$//;s/""[,"]*/\t/g' seu_arquivo.txt | expand -t 18

Obrigado a todos.
Post by Reivson Lopes ***@gmail.com [shell-script]
Usei o tr para trocar as aspas e virgula por espaço.
cat arquivo.txt | tr "\"\"\,\"\"" " " > arquivo2.txt
Não sei se server para você assim.
Post by Sidney Souza ***@yahoo.com.br [shell-script]
você pode usar o comando printf para isso
------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt
original e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Att,
Reivson Lopes.
Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034

"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"

ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-10 13:00:20 UTC
Permalink
Eldimar, eu vi que vc já resolveu o seu problema, mas vou dar mais uma
dica, até pq vou usar o esquecido cmd column, que tabela uma saída. No meu
livro, escrevi o seguinte:
================================
A opção -t formata uma tabela para impressão, na forma que considera ser o
ideal.
A opção -c NUM monta a saída para uma tela, cuja largura disponibilizada
para fazer a tabulação seja NUM.
A opção -s, quando usada junto à -t, explicita qual á o separador entre
campos da entrada. Muito útil quando usado com arquivos com campos
separados por vírgulas (.csv).
Observação: a opção -s aceita múltiplos separadores.
================================

Então para usá-lo, fiz o seguinte:
sed 's/"",""/^/g; s/"//g' | column -ts^
Explico: Não podia usar a vírgula como separador, pq na saída existem
vírgulas que não são separadores, como as decimais. Então o meu sed inicial
foi para excluir as aspas e trocar as vírgulas por circunflexos a saída
disso foi mandada para o column que tabulou (-t) usando como delimitador o
circunflexo (-s^)

Outro cmd que quebra o maior galho na formatação de saída e recomendo uma
olhada em como funciona é o pr

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia Senhores, desculpem a demora no retorno, resolvi com a dica do
$ sed 's/""*//;s/"*$//;s/""[,"]*/\t/g' seu_arquivo.txt | expand -t 18
Obrigado a todos.
Post by Reivson Lopes ***@gmail.com [shell-script]
Usei o tr para trocar as aspas e virgula por espaço.
cat arquivo.txt | tr "\"\"\,\"\"" " " > arquivo2.txt
Não sei se server para você assim.
Post by Sidney Souza ***@yahoo.com.br [shell-script]
você pode usar o comando printf para isso
------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt
original e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Att,
Reivson Lopes.
Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
itamarnet@yahoo.com.br [shell-script]
2017-02-10 13:38:58 UTC
Permalink
Grande mestre Julio! Outra dica essencial e muito bem lembrado o comando column

Só para ilustrar uma experiência adicional, gostaria de descrever 2 cenários, tomando por base o exemplo do Eldimar.


A dica que enviei, me baseie num ambiente onde a versão do Bash é 3.2.25 num Red Hat Tikanga
e só depois testei num Linux Mint Serena e Manjaro Rolling Release, ambos com Bash 4.3 e 4.4 respectivamente.


A terceira linha onde há o tipo "Próprio", no Red Hat a formatação ficou perfeita, mas no Mint e Manjaro o alinhamento ficou defasado em um espaço.


A presença de um caractere multi-byte, no caso a letra "ó", parece influenciar alguns comandos que se atrapalham na contagem e formatação e no caso o "expand" usado nas distros Manjaro e Mint ocorreu esse problema, veja essa demonstração usando "printf":


$ printf "%-18s|%s\n" "Próprio" "16.095.256,90"

Próprio |16.095.256,90



$ printf "%-18s|%s\n" "Proprio" "16.095.256,90"

Proprio |16.095.256,90



O problema do exemplo acima aconteceu em todas as distros, incluindo a Red Hat.


Aparentemente o "sed" contorna esse problema, assim como o bem lembrado comando "column" pelo Júlio.


A solução proposta pelo Júlio funcionou perfeitamente em todas as distros.


Apenas informativo, pois estranhava essa diferença em distros diferentes.


[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-10 16:29:37 UTC
Permalink
Mas, Itamar, creio que seja problema na definição/configuração do UTF-8

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by ***@yahoo.com.br [shell-script]
Grande mestre Julio! Outra dica essencial e muito bem lembrado o comando column
Só para ilustrar uma experiência adicional, gostaria de descrever 2
cenários, tomando por base o exemplo do Eldimar.
A dica que enviei, me baseie num ambiente onde a versão do Bash é 3.2.25
num Red Hat Tikanga
e só depois testei num Linux Mint Serena e Manjaro Rolling Release, ambos
com Bash 4.3 e 4.4 respectivamente.
A terceira linha onde há o tipo "Próprio", no Red Hat a formatação ficou
perfeita, mas no Mint e Manjaro o alinhamento ficou defasado em um espaço.
A presença de um caractere multi-byte, no caso a letra "ó", parece
influenciar alguns comandos que se atrapalham na contagem e formatação e no
caso o "expand" usado nas distros Manjaro e Mint ocorreu esse problema,
$ printf "%-18s|%s\n" "Próprio" "16.095.256,90"
Próprio |16.095.256,90
$ printf "%-18s|%s\n" "Proprio" "16.095.256,90"
Proprio |16.095.256,90
O problema do exemplo acima aconteceu em todas as distros, incluindo a Red Hat.
Aparentemente o "sed" contorna esse problema, assim como o bem lembrado
comando "column" pelo Júlio.
A solução proposta pelo Júlio funcionou perfeitamente em todas as distros.
Apenas informativo, pois estranhava essa diferença em distros diferentes.
[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2017-02-10 17:11:37 UTC
Permalink
Caro Julio Essa foi uma das primeiras coisas que verifiquei e a saída do locale no Red Hat é:
LANG=pt_BR.UTF-8
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"
LC_ALL=


e no Manjaro e Mint é idêntica apenas incluindo
LANGUAGE=
e mesmo alterando para ficar
LANGUAGE="pt_BR.UTF-8"


as diferenças permanecem.


- O "sed" e "column" funcionam bem em todos
- O expand, cut falham no Manjaro e Mint e funcionam no Red Hat
- O "printf" falha em todos os casos.




Não sei se é apenas isso, ainda me parece uma incógnita.
Se suspeitar de algo, agradeceria uma "luz" para esse mistério


[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-10 17:50:03 UTC
Permalink
Mas a variável do sistema é LANG e não LANGUAGE. Outra coisa que costuma
dar zebra, mas não creio que seja o caso, é fazer:

$ export LC_COLLATE=C

Alias, aconselho a todos incluírem essa linha no profile geral do sistema
(normalmente /etc/profile). Para entender o porque façam:

Letra=C # C maiúsculo
case $Letra in
[a-z]) echo Letra Minuscula
;;
[A-Z]) echo Letra Maiuscula
;;
[0-9]) echo Numero
;;
*) echo Caracter Especial
;;
esac

Se LC_COLLATE não estiver correta, a resposta será Letra Minúscula. Aí faça:

LC_COLLATE=C
e execute novamente o código. Problema resolvido.

Eu tinha um prg que rodava no UNIX SVr4 sem nenhum problema. Qdo migramos
para Linux, começou a dar esse tipo de bobeira. Até eu descobri essa
variável, apanhei muito!...

Mas como eu disse, não creio que o erro que o Itamar encontrou seja aí.


Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by ***@yahoo.com.br [shell-script]
Caro Julio
Essa foi uma das primeiras coisas que verifiquei e a saída do locale no
LANG=pt_BR.UTF-8
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"
LC_ALL=
e no Manjaro e Mint é idêntica apenas incluindo
LANGUAGE=
e mesmo alterando para ficar
LANGUAGE="pt_BR.UTF-8"
as diferenças permanecem.
- O "sed" e "column" funcionam bem em todos
- O expand, cut falham no Manjaro e Mint e funcionam no Red Hat
- O "printf" falha em todos os casos.
Não sei se é apenas isso, ainda me parece uma incógnita.
Se suspeitar de algo, agradeceria uma "luz" para esse mistério
[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-10 13:17:57 UTC
Permalink
Fala Reivson,
sua resposta demorou a pintar na lista, pq para evitar spams, todos que
entram na lista estão moderados e ficam nessa condição até que os
moderadores vejam pelo seu 1o. post que vc é uma pessoa que está afim de
contribuir/aprender, sendo então "desmoderado". Agora suas
perguntas/respostas não terão mais atrasos.

Bem, vou aproveitar, já que vc é novo na lista (deve ser novo tb em Shell)
para dar uma dica para a lista inteira.

99,99999% das vezes que um cmd cat é empregado, ele é desnecessário e só
serve para onerar a máquina. A linha de cmd que vc mandou, poderia (e
deveria) ser escrita assim:

$ tr '",' ' ' < arq.txt > arq2.txt

Dessa forma vc evita um fork do Shell criando outra instância e não perde o
tempo para carregar o cat para memória.

Agradeço se alguém usasse arquivo grande para medir as duas formas de
execução e postasse na lista para que todos vejam. Para que o tempo de
gravação não influencie o resultado, mande a saída dos 2 cmds para /dev/null

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Reivson Lopes ***@gmail.com [shell-script]
Usei o tr para trocar as aspas e virgula por espaço.
cat arquivo.txt | tr "\"\"\,\"\"" " " > arquivo2.txt
Não sei se server para você assim.
Post by Sidney Souza ***@yahoo.com.br [shell-script]
você pode usar o comando printf para isso
------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt
original e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Att,
Reivson Lopes.
Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
itamarnet@yahoo.com.br [shell-script]
2017-02-10 13:45:52 UTC
Permalink
Julio tenho um arquivo de inventário de 785MB e tive esse resultados:


$ time cat inventario.txt | tr '0' '_' > /dev/null


real 0m5.274s
user 0m2.124s
sys 0m2.756s


$ time tr '0' '_' < inventario.txt > /dev/null


real 0m1.837s
user 0m1.298s
sys 0m0.514s


$ ls -l inventario.txt
-rw-r--r-- 1 itamarsouza itamarsouza 822010194 Fev 10 10:10 inventario.txt





[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-10 16:33:39 UTC
Permalink
Conforme prevíamos 200% a 300% mais veloz, sem contar com o Înus na máquina.

Repito: 99,9999% (dízima perióca ;) das vezes que vcs usarem um cmd cat,
reflitam! Não deve ser a melhor forma de fazer o proposto...

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by ***@yahoo.com.br [shell-script]
Julio
$ time cat inventario.txt | tr '0' '_' > /dev/null
real 0m5.274s
user 0m2.124s
sys 0m2.756s
$ time tr '0' '_' < inventario.txt > /dev/null
real 0m1.837s
user 0m1.298s
sys 0m0.514s
$ ls -l inventario.txt
-rw-r--r-- 1 itamarsouza itamarsouza 822010194 Fev 10 10:10 inventario.txt
[]'s
Itamar
Reivson Lopes reivsonlopes@gmail.com [shell-script]
2017-02-10 13:45:55 UTC
Permalink
Mestre Julio,

É verdade, estou começando agora em programação shell, come cei a ler
semana passada seu livro, obrigado pela aula.

Usei o time para verificar a diferença entre os dois comandos, mesmo em um
arquivo pequeno existe a diferença.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Reivson,
sua resposta demorou a pintar na lista, pq para evitar spams, todos que
entram na lista estão moderados e ficam nessa condição até que os
moderadores vejam pelo seu 1o. post que vc é uma pessoa que está afim de
contribuir/aprender, sendo então "desmoderado". Agora suas
perguntas/respostas não terão mais atrasos.
Bem, vou aproveitar, já que vc é novo na lista (deve ser novo tb em Shell)
para dar uma dica para a lista inteira.
99,99999% das vezes que um cmd cat é empregado, ele é desnecessário e só
serve para onerar a máquina. A linha de cmd que vc mandou, poderia (e
$ tr '",' ' ' < arq.txt > arq2.txt
Dessa forma vc evita um fork do Shell criando outra instância e não perde
o tempo para carregar o cat para memória.
Agradeço se alguém usasse arquivo grande para medir as duas formas de
execução e postasse na lista para que todos vejam. Para que o tempo de
gravação não influencie o resultado, mande a saída dos 2 cmds para /dev/null
Abcs,
Julio
*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*
​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Reivson Lopes ***@gmail.com [shell-script]
Usei o tr para trocar as aspas e virgula por espaço.
cat arquivo.txt | tr "\"\"\,\"\"" " " > arquivo2.txt
Não sei se server para você assim.
Post by Sidney Souza ***@yahoo.com.br [shell-script]
você pode usar o comando printf para isso
------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt
original e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Att,
Reivson Lopes.
Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
--
Att,
Reivson Lopes.

Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
E-mail: ***@itep.br
Gtalk: ***@gmail.com
Eldimar Souza eldimax@gmail.com [shell-script]
2017-02-10 17:50:48 UTC
Permalink
Grande Mestre Julio,

Obrigado pela dica, ja aproveitei pra dar uma olhada no column mais
afundo.
Post by Reivson Lopes ***@gmail.com [shell-script]
Mestre Julio,
É verdade, estou começando agora em programação shell, come cei a ler
semana passada seu livro, obrigado pela aula.
Usei o time para verificar a diferença entre os dois comandos, mesmo em um
arquivo pequeno existe a diferença.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Reivson,
sua resposta demorou a pintar na lista, pq para evitar spams, todos que
entram na lista estão moderados e ficam nessa condição até que os
moderadores vejam pelo seu 1o. post que vc é uma pessoa que está afim de
contribuir/aprender, sendo então "desmoderado". Agora suas
perguntas/respostas não terão mais atrasos.
Bem, vou aproveitar, já que vc é novo na lista (deve ser novo tb em
Shell) para dar uma dica para a lista inteira.
99,99999% das vezes que um cmd cat é empregado, ele é desnecessário e só
serve para onerar a máquina. A linha de cmd que vc mandou, poderia (e
$ tr '",' ' ' < arq.txt > arq2.txt
Dessa forma vc evita um fork do Shell criando outra instância e não perde
o tempo para carregar o cat para memória.
Agradeço se alguém usasse arquivo grande para medir as duas formas de
execução e postasse na lista para que todos vejam. Para que o tempo de
gravação não influencie o resultado, mande a saída dos 2 cmds para /dev/null
Abcs,
Julio
*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*
​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Reivson Lopes ***@gmail.com [shell-script]
Usei o tr para trocar as aspas e virgula por espaço.
cat arquivo.txt | tr "\"\"\,\"\"" " " > arquivo2.txt
Não sei se server para você assim.
Post by Sidney Souza ***@yahoo.com.br [shell-script]
você pode usar o comando printf para isso
------------------------------------------------------
http://www.politicos.org.br
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt
original e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Att,
Reivson Lopes.
Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
--
Att,
Reivson Lopes.
Administrador de Sistemas / ITEP
Graduado Redes de Computadores / Universo - Recife
Pós Graduando Banco de dados Oracle / Uninassau - Recife
Tel. +55 81 9.99173237
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034

"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"

ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
Leslie Watter leslie@watter.org [shell-script]
2017-02-09 17:20:17 UTC
Permalink
se vc só quer ver esses dados formatados bem bonitinhos, pode usar o
libreoffice e importar como csv.
não precisa de mais nada.

se quiser usar o shell, pode usar o printf, awk, sed, qualquer um desses
trocando os caracteres do meio por tabs vai resolver.

att,

LEslie
Post by Eldimar Souza ***@gmail.com [shell-script]
Bom dia senhores, tenho um script que captura os dados e gera em um
"""Tipo"",""Limite Autorizado"",""Lod Distribuido"",""%
Distribuido"",""Saldo Atual"",""% Consumo LOD""
""Gestor"",""18.463.830,00"",""17.630.303,12"",""95,48%
"",""-6.138.256,35"",""0,00% ""
""Próprio"",""16.095.256,90"",""16.095.256,00"",""99,99%
"",""-5.972.743,38"",""-37,10% ""
""Substabelecido"",""2.368.573,10"",""1.535.047,12"",""64,80%
"",""-.165.512,97"",""0,00%""
Tipo Limite Autorizado Lod Distribuido %
Distribuido Saldo Atual % Consumo LOD""
Gestor 18.463.830,00 17.630.303,12 95,48%
-6.138.256,35 0,00% ""
Próprio 16.095.256,90 16.095.256,00 99,99%
-5.972.743,38 -37,10% ""
Substabelecido 2.368.573,10 1.535.047,12 64,80%
-.165.512,97 0,00%""
Não preciso que os dados sejam salvos tratados, posso pegar o txt original
e tratar gerando um novo, como conseguiria fazer isso?
--
Eldimar Jaconias de Souza
Analista de Suporte Pleno
Tel: (61) 9228-9214 / 3048-1034
"O que fazer, pra onde ir senhor se só tu tens as palavras de Vida Eterna"
ºvº "Software Livre: não é pelo dinheiro.
/( _ )\ É uma questão de consciência."
^ ^
--
Leslie H. Watter
itamarnet@yahoo.com.br [shell-script]
2017-02-09 18:50:10 UTC
Permalink
Caro Eldimar

Tenta isso:


$ sed 's/""*//;s/"*$//;s/""[,"]*/\t/g' seu_arquivo.txt | expand -t 18



[]'s
Itamar
Loading...