Somar determinados caracteres de um arquivo [RESOLVIDO]

1. Somar determinados caracteres de um arquivo [RESOLVIDO]

Diogo Pinheiro da Rosa
Diogopr28

(usa CentOS)

Enviado em 22/10/2015 - 11:23h

Prezados,

Estou um pouco confuso em relação a programação shell, tenho algumas linhas com 25 caracteres,
como faço para pegar somente os 4 últimos e somar com os das demais linhas e depois joga-los em um
arquivo diferente, por exemplo..

193002014-11-152202490493
100592014-11-151403470428
275972014-11-150124160493
048922014-11-150715270472
229862014-11-151401150493

Vejam que o 0493 aparece 3 vezes, como faço para somar não os números, e sim quantas vezes ele
aparece nas linhas?

Só para ressaltar, tenho um arquivo com 1mil linhas iguais a essas, coloquei essas linhas como exemplo,
eu preciso fazer com que o script pegue os caracteres referentes ao terminal e some automaticamente sem
que eu indique qual o numero do terminal.

Grato pela ajuda.

Att,


  


2. Re: Somar determinados caracteres de um arquivo

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/10/2015 - 12:58h

A questão não está muito clara. Você quer que ele calcule a quantidade de todas as ocorrências diferentes ou que ele calcule apenas o que for informado?
Por exemplo, supondo que o arquivo só possua as linhas
193002014-11-152202490493
100592014-11-151403470428
275972014-11-150124160493
048922014-11-150715270472
229862014-11-151401150493

Você quer que ele retorne algo como:
0493: 3x
0428: 1x
0472: 1x

Ou quer que ele retorne apenas a quantidade de ocorrências de um número que você solicitar? Exemplo:
$ ./script.sh 0493
0493: 3x

--
-I've been talking to the main computer
-And...?
-It hates me


3. Re: Somar determinados caracteres de um arquivo

Fabiano
fpires

(usa Debian)

Enviado em 22/10/2015 - 13:36h

Supondo que o arquivo chame-se lista.txt, veja se esse comando resolve seu problema:


cut -c 22-25 lista.txt | sort | uniq -c


A saída aqui ficou parecida com isso:

1 0428
1 0472
3 0493


Onde o primeiro número é a quantidade de ocorrências no arquivo (considerando-se os últimos quatro dígitos de cada linha).


4. Re: Somar determinados caracteres de um arquivo [RESOLVIDO]

Diogo Pinheiro da Rosa
Diogopr28

(usa CentOS)

Enviado em 22/10/2015 - 14:37h

thinomar escreveu:

A questão não está muito clara. Você quer que ele calcule a quantidade de todas as ocorrências diferentes ou que ele calcule apenas o que for informado?
Por exemplo, supondo que o arquivo só possua as linhas
193002014-11-152202490493
100592014-11-151403470428
275972014-11-150124160493
048922014-11-150715270472
229862014-11-151401150493

Você quer que ele retorne algo como:
0493: 3x
0428: 1x
0472: 1x

Ou quer que ele retorne apenas a quantidade de ocorrências de um número que você solicitar? Exemplo:
$ ./script.sh 0493
0493: 3x

--
-I've been talking to the main computer
-And...?
-It hates me


Olá thinomar,

Então, o retorno teria que ser como vc indicou primeiro, sem que eu informe nada..
Seria:

0493: 3x
0428: 1x
0472: 1x

Att,



5. Re: Somar determinados caracteres de um arquivo [RESOLVIDO]

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/10/2015 - 17:56h

Então o comando que o fpires mandou resolve o seu problema :)
--
-I've been talking to the main computer
-And...?
-It hates me


6. Re: Somar determinados caracteres de um arquivo [RESOLVIDO]

Diogo Pinheiro da Rosa
Diogopr28

(usa CentOS)

Enviado em 22/10/2015 - 17:59h

thinomar escreveu:

Então o comando que o fpires mandou resolve o seu problema :)
--
-I've been talking to the main computer
-And...?
-It hates me


Sim, as informações depois de ordenadas eu mandei pra um arquivo .csv.

As linhas com as informações do terminal e seu numero ficaram em colunas separadas, mas a soma
de quantas transações cada terminal fez ficou numa mesma coluna, saberia me dizer como faço pra deixar
em colunas separadas no arquivo .csv?

Att,




7. Re: Somar determinados caracteres de um arquivo [RESOLVIDO]

thinomar
thinomar

(usa Linux Mint)

Enviado em 22/10/2015 - 19:42h

Vê se dá certo assim:
cut -c 22-25 lista.txt | sort | uniq -c | awk '{ print $1 "\t" $2 }' 

--
-I've been talking to the main computer
-And...?
-It hates me


8. Re: Somar determinados caracteres de um arquivo [RESOLVIDO]

Diogo Pinheiro da Rosa
Diogopr28

(usa CentOS)

Enviado em 22/10/2015 - 23:00h

thinomar escreveu:

Vê se dá certo assim:
cut -c 22-25 lista.txt | sort | uniq -c | awk '{ print $1 "\t" $2 }' 

--
-I've been talking to the main computer
-And...?
-It hates me


Perfeito!!

Obrigado pela ajuda amigos!!








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts