Introdução
Neste laboratório, você aprenderá sobre o processamento de texto no Linux, com foco no utilitário de linha de comando poderoso chamado awk. O processamento de texto é uma habilidade fundamental no Linux que permite aos usuários manipular, analisar e extrair informações significativas de dados textuais.
O comando awk é particularmente útil para tarefas de manipulação de dados. Ele permite que você processe arquivos de texto linha por linha, divida cada linha em campos e execute operações nesses campos. Isso o torna ideal para trabalhar com dados estruturados, como logs, arquivos CSV e dados tabulares.
Durante este laboratório, você aprenderá como usar awk para várias tarefas de processamento de dados, desde a extração simples de colunas até análises de dados mais complexas com condições. Essas habilidades são essenciais para administradores de sistemas, analistas de dados e qualquer pessoa que trabalhe com dados textuais em um ambiente Linux.
Entendendo AWK e Criando Dados de Exemplo
Nesta etapa, você aprenderá os fundamentos do awk e criará um arquivo de dados de amostra para trabalhar ao longo do laboratório.
Primeiro, navegue até o diretório do projeto:
cd ~/project
Agora, crie um arquivo de dados de amostra chamado probe_data.txt que contenha dados tabulares com colunas separadas por tabulações:
echo -e "Timestamp\tReading\n2023-01-25T08:30:00Z\t-173.5\n2023-01-25T08:45:00Z\t-173.7\n2023-01-25T09:00:00Z\t-173.4" > probe_data.txt
Vamos examinar o conteúdo deste arquivo:
cat probe_data.txt
Você deve ver uma saída semelhante a esta:
Timestamp Reading
2023-01-25T08:30:00Z -173.5
2023-01-25T08:45:00Z -173.7
2023-01-25T09:00:00Z -173.4
Esses dados representam leituras de temperatura em diferentes horários.
A sintaxe básica de um comando awk é:
awk 'pattern {action}' filename
pattern: Condição opcional para determinar quais linhas processaraction: O comando a ser executado nas linhas correspondentesfilename: O arquivo a ser processado
Vamos executar um comando awk simples para imprimir o arquivo inteiro:
awk '{print}' probe_data.txt
Este comando imprime cada linha do arquivo porque nenhum padrão é especificado, então awk processa todas as linhas.
Vamos extrair apenas a coluna de leituras (a segunda coluna) do nosso arquivo de dados:
awk -F "\t" '{print $2}' probe_data.txt
Neste comando:
-F "\t"define o separador de campo como um caractere de tabulação{print $2}diz aoawkpara imprimir o segundo campo de cada linha
Você deve ver uma saída semelhante a:
Reading
-173.5
-173.7
-173.4
Filtrando Dados com AWK
Nesta etapa, você aprenderá como filtrar dados com base em condições usando awk. Este é um recurso poderoso que permite extrair apenas os dados que atendem a critérios específicos.
awk permite que você especifique padrões ou condições para determinar quais linhas processar. Vamos colocar isso em prática com nossos dados de temperatura.
Suponha que queremos encontrar todas as leituras em que a temperatura está abaixo de um determinado limite. Isso pode indicar condições incomuns ou possíveis problemas de equipamento.
Vamos encontrar todos os registros em que a temperatura está abaixo de -173,6 graus:
awk -F "\t" '$2 < -173.6 {print $0}' probe_data.txt
Neste comando:
$2 < -173.6é a condição que verifica se o segundo campo (leitura) é menor que -173,6{print $0}diz aoawkpara imprimir a linha inteira quando a condição é verdadeira$0representa a linha inteira
Você deve ver uma saída semelhante a:
2023-01-25T08:45:00Z -173.7
Isso mostra que apenas uma leitura está abaixo do nosso limite.
Você também pode usar operadores lógicos em suas condições. Por exemplo, vamos encontrar todas as leituras entre -173,6 e -173,3:
awk -F "\t" '$2 <= -173.4 && $2 >= -173.6 {print $0}' probe_data.txt
A saída deve ser:
2023-01-25T09:00:00Z -173.4
Você também pode extrair colunas específicas de seus dados filtrados. Por exemplo, para ver apenas os timestamps das leituras abaixo de -173,6:
awk -F "\t" '$2 < -173.6 {print $1}' probe_data.txt
Isso geraria a saída:
2023-01-25T08:45:00Z
Operações Avançadas com AWK
Nesta etapa final, você aprenderá como realizar cálculos e criar relatórios formatados com awk. Essas operações avançadas demonstram o poder do awk como algo mais do que apenas uma ferramenta simples de filtragem de texto.
Primeiro, vamos calcular a temperatura média de nossas leituras:
awk -F "\t" 'NR>1 {sum+=$2; count++} END {print "Average temperature: " sum/count}' probe_data.txt
Neste comando:
NR>1pula a linha do cabeçalho (primeira linha){sum+=$2; count++}adiciona cada temperatura a uma soma corrente e incrementa um contadorEND {print "Average temperature: " sum/count}calcula e imprime a média após processar todas as linhas
Você deve ver uma saída semelhante a:
Average temperature: -173.533
Agora, vamos criar um relatório mais detalhado que inclua tanto os dados originais quanto alguma análise:
awk -F "\t" '
BEGIN {print "Temperature Reading Analysis\n---------------------------"}
NR==1 {print "Time\t\t\tReading\tStatus"}
NR>1 {
if ($2 < -173.6) status="WARNING";
else if ($2 > -173.5) status="NORMAL";
else status="CAUTION";
print $1 "\t" $2 "\t" status
}
END {print "---------------------------\nAnalysis complete."}
' probe_data.txt
Este comando complexo:
- Imprime uma mensagem de cabeçalho no bloco
BEGIN - Imprime os cabeçalhos das colunas ao processar a primeira linha (
NR==1) - Para cada linha de dados (
NR>1):- Avalia a temperatura e atribui um status
- Imprime o timestamp, a leitura e o status
- Imprime uma mensagem de rodapé no bloco
END
Você deve ver uma saída semelhante a:
Temperature Reading Analysis
---------------------------
Time Reading Status
2023-01-25T08:30:00Z -173.5 CAUTION
2023-01-25T08:45:00Z -173.7 WARNING
2023-01-25T09:00:00Z -173.4 NORMAL
---------------------------
Analysis complete.
Vamos criar mais um exemplo que demonstra o uso de awk para contar ocorrências. Contaremos quantas leituras se enquadram em cada categoria de status:
awk -F "\t" '
NR>1 {
if ($2 < -173.6) status="WARNING";
else if ($2 > -173.5) status="NORMAL";
else status="CAUTION";
count[status]++
}
END {
print "Status counts:";
for (status in count) print status ": " count[status]
}
' probe_data.txt
Este comando usa um array associativo (count) para rastrear quantas leituras se enquadram em cada categoria de status, e então imprime os totais.
Você deve ver uma saída semelhante a:
Status counts:
WARNING: 1
NORMAL: 1
CAUTION: 1
Esses exemplos demonstram o quão poderoso awk pode ser para tarefas de análise de dados. Você pode usar técnicas semelhantes para processar arquivos de log, analisar dados do sistema ou trabalhar com quaisquer dados de texto estruturados no Linux.
Resumo
Neste laboratório, você aprendeu os recursos essenciais de processamento de texto no Linux usando o poderoso utilitário de linha de comando awk. Você começou com os fundamentos da criação e visualização de arquivos de dados estruturados e progrediu por técnicas cada vez mais avançadas.
As principais habilidades adquiridas neste laboratório incluem:
- Compreensão da sintaxe e funcionalidade básicas do
awk - Extração de colunas específicas de dados tabulares
- Filtragem de dados com base em condições numéricas
- Realização de cálculos e geração de relatórios formatados
- Uso de
awkpara tarefas práticas de análise de dados
Essas habilidades de processamento de texto são inestimáveis para qualquer pessoa que trabalhe com dados em um ambiente Linux, desde administradores de sistema analisando arquivos de log até analistas de dados extraindo insights de grandes conjuntos de dados. A capacidade de manipular e analisar rapidamente dados de texto diretamente da linha de comando, sem a necessidade de ferramentas especializadas, é uma capacidade poderosa que pode melhorar significativamente sua produtividade em um ambiente Linux.
Ao continuar sua jornada com o Linux, considere explorar outras ferramentas de processamento de texto como sed, grep e cut, que complementam o awk e podem ser combinadas para fluxos de trabalho de manipulação de dados ainda mais poderosos.



