Como analisar esses dados

0

Eu tenho um arquivo cheio de dados como este:

15-06-18 22:00 2968

Cada entrada é separada por uma nova linha. Eu quero extrair o último número (2968). Como posso fazer isso? (Eu estou no Linux com bash ).

Desculpe se não tenho as tags corretas / estou postando no lugar errado. Não tenho certeza de onde colocar essa questão.

    
por Adrian Zhang 22.09.2018 / 06:00

5 respostas

1

Assumindo que o conteúdo está no arquivo chamado 'file', o seguinte deve ser feito.

cut -d ' ' -f 3 file

cut é o comando Unix. Na página do manual:

  • recortar - remover seções de cada linha de arquivos
  • -d diz o delimitador para usar no corte.
  • -f que campos para selecionar.
  • file é o arquivo de origem.

o resultado vai para a saída padrão.

    
por 22.09.2018 / 06:17
2

Imprimir a última coluna:

awk '{print $NF}' file

Saída:

2968

A variável NF é configurada para o número total de campos no registro de entrada. $ NF sempre contém o conteúdo da última coluna. Ainda mais curto:

awk '$0=$NF' file
    
por 22.09.2018 / 07:19
1

Você pode extrair os dados necessários usando awk , cut ou sed ou até mesmo uma combinação de grep com regex.

Se os dados em cada linha de arquivo que você está tendo, segue o padrão exato que você apresentou aqui:

15-06-18 22:00 2968

Então, você pode extrair o último número por este:

awk '{ print $3 }' file_path

E para salvar os dados, você pode redirecioná-los para outro arquivo:

awk '{ print $3 }' file_path > new_file

Como funciona:

Basicamente, o awk é uma ferramenta muito poderosa usada para manipulação de dados textuais. No seu caso:

15-06-18 22:00 2968

A linha acima pode ser tratada como 3 strings separadas por space entre e awk por default trata um espaço como separador (dado por -F ).

Para experimentar um pouco de diversão com o awk, experimente isso com seus dados e você entenderá muito melhor.

awk -F: '{ print $2 }' your_file
awk -F- '{ print $3 }' your_file

Sinta-se à vontade para adicionar mais detalhes.

    
por 22.09.2018 / 06:17
1

Eu descobri uma solução que remove os primeiros 15 caracteres.

sed 's/^..............//' tmp.txt

Obrigado, @ fixer1234!

    
por 22.09.2018 / 06:16
0

Ou no bash:

#!/bin/bash

cat "$1" | while read day hour value ; do
    echo $value
done
    
por 22.09.2018 / 19:09