Ultimate Guide to Grep, Awk, Sed e JQ para processamento de texto no Linux
O processamento de texto é uma pedra angular da administração e desenvolvimento do sistema Linux. Se você está analisando logs, transformando dados ou automatizando tarefas, ferramentas como Grep, Awk, Sed e JQ são indispensáveis. Cada um desses utilitários da linha de comando possui pontos fortes exclusivos e, juntos, formam um poderoso kit de ferramentas para manipular texto e dados no Linux. Neste guia abrangente, exploraremos o que cada ferramenta faz, como usá -los de maneira eficaz e exemplos práticos para ajudá -lo a dominar o processamento de texto. ÍNDICE Introdução ao processamento de texto O processamento de texto no Linux envolve a pesquisa, filtragem, transformação e formatação de dados, geralmente em arquivos ou fluxos. As ferramentas grep, awk, sed e jq são projetadas para lidar com essas tarefas com eficiência, cada uma com um foco específico: grep: pesquise padrões no texto. AWK: Extrações e processos de dados estruturados. SED: edita fluxos de texto com transformações baseadas em padrões. JQ: manipula e consulta dados JSON. Essas ferramentas são leves, rápidas e incorporadas na maioria das distribuições Linux, tornando -as essenciais para desenvolvedores, sistemas e engenheiros de dados. Vamos mergulhar nos recursos de cada ferramenta e nos casos de uso. Entendendo o Grep: O Master Grep (impressão regular global de expressão regular) é uma utilidade para a pesquisa de texto usando expressões regulares. É ideal para encontrar linhas específicas em arquivos ou fluxos de entrada que correspondam a um padrão. Os principais recursos suportam expressões regulares básicas e estendidas. Pode pesquisar recursivamente através de diretórios. Fornece opções para pesquisas insensíveis ao caso, números de linha e muito mais. Sintaxe básica grep [options] padrão [file…]
Digite o modo de tela completa Sair da tela cheia Modo Exemplo: Pesquisando uma String Suponha que você tenha um arquivo de arquivo servidor.log e deseja encontrar todas as linhas contendo “erro”: grep “error” server.log. Em um diretório: GREP -R “TODO” *.py Digite o modo de tela cheia Sair do modo de tela cheia Inverter correspondência: mostre linhas que não correspondem a um padrão: Grep -v “depuração” servidor.log Digite o modo de tela cheia Full Screen Modo Grep é sua ferramenta preferida para pesquisas rápidas, mas é limitada para encontrar e exibir linhas. Para manipulação de dados mais complexos, nos voltamos para o AWK. Explorando AWK: O Assistente de Extração de Dados Awk é uma linguagem de programação versátil projetada para digitalização e processamento de padrões. É particularmente útil para trabalhar com texto estruturado, como arquivos CSV ou logs com formatos consistentes. Os principais recursos processam o texto linha por linha, dividindo linhas em campos. Suporta lógica condicional, loops e formatação de saída personalizada. Ideal para extrair colunas específicas ou transformar dados. Sintaxe básica Awk ‘Pattern {Action}’ [file]
Digite o modo de tela cheia de saída do modo de tela cheia Exemplo: Extraindo campos de um CSV, com um CSV File Users.csv com o nome das colunas, idade, cidade: Alice, 25, New York Bob, 30, London Charlie, 35, Paris Entre no modo de tela completa. Saída do modo de tela cheia: Alice, Nova York Bob, Londres Charlie, Paris Entre no modo de tela cheia Sair do modo de tela cheia Filtragem condicional avançada: Imprima usuários com mais de 30: awk -f ‘,’ ‘$ 2> 30 {Print $ 1}’ Users.csv Enter Modo de tela full -screen Modo de tela full -screen Modo de tela completa ‘{sum += $ 2} end {Print sum}’ users.csv Digite o modo de tela cheia Saída da tela cheia Saída: 90 Digite o modo de tela cheia Sair do modo de tela cheia brilha quando você precisa extrair ou calcular dados do texto estruturado, mas para edição de texto em local, sed é a melhor opção. Mastering sed: o editor de fluxos sed (editor de fluxos) foi projetado para editar fluxos de texto aplicando transformações baseadas em padrões. É perfeito para tarefas como encontrar e substituir, excluir linhas ou inserir texto. Os principais recursos executam edições ou saídas de arquivo no local no terminal. Suporta expressões regulares para correspondência de padrões. Não interativo, tornando-o ideal para scripts. Sintaxe básica sed [options] ‘comando’ [file]
Digite o modo de tela cheia de saída do modo de tela cheia Exemplo: Substituindo o texto para substituir todas as instâncias de “erro” por “aviso” no servidor.log: sed ‘s/errning/aviso/g’ server.log inserir modo de tela full skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin skin. ‘/Debug/D’ Server.log Digite Modo de tela Full Salt Modo de tela cheia Inserir texto: Adicione um cabeçalho a um arquivo: sed ‘1i # log file’ server.log Digite o modo de tela cheia de tela cheia sed é poderosa para transformações de texto, mas não foi projetado para dados estruturados como JSON. É aí que entra o JQ. Mergulhar no JQ: JSON Processando Powerhouse JQ é uma ferramenta de linha de comando para analisar, filtrar e transformar dados JSON. Com a ascensão das configurações de APIs e JSON, o JQ se tornou essencial para os desenvolvedores modernos. Principais recursos consultas e manipula dados JSON com uma sintaxe simples. Suporta objetos JSON de filtragem, mapeamento e agregação. Leve e amigável ao scripts. Sintaxe básica ‘filtro’ [file]
Digite o modo de tela cheia de saída do modo de tela cheia Exemplo: Consultando JSON Dado um JSON FILE DATA.JSON:
[
{“name”: “Alice”, “age”: 25, “city”: “New York”},
{“name”: “Bob”, “age”: 30, “city”: “London”},
{“name”: “Charlie”, “age”: 35, “city”: “Paris”}
]
Digite o modo de saída do modo de tela cheia para extrair todos os nomes: JQ ‘.[].Nome ‘Data.json Digite o modo de tela cheia Saída do modo de tela cheia: “Alice” “Bob” “Charlie” Digite a filtragem de uso avançado de uso avançado da tela de tela cheia: Filtragem de uso avançado: Faça com que os usuários com mais de 30: JQ’.[] | Selecione (.age> 30) | .Name ‘Data.json Digite o modo de tela cheia Saída da tela cheia Saída: “Charlie” Digite o modo de tela cheia Sair do modo de tela cheia transformando: Crie uma nova estrutura JSON: JQ'[.[] | {Usuário: .Name, Localização: .city}]’data.json Digite o modo de tela cheia Saída de tela cheia Saída:
[
{“user”: “Alice”, “location”: “New York”},
{“user”: “Bob”, “location”: “London”},
{“user”: “Charlie”, “location”: “Paris”}
]
Digite o modo de saída do modo de tela cheia JQ é incomparável para o processamento JSON, mas seu poder real surge quando combinado com outras ferramentas. Combinando as ferramentas: exemplos do mundo real Essas ferramentas são frequentemente usadas juntas em pipelines para resolver problemas complexos. Aqui estão dois exemplos práticos: Exemplo 1: Análise de log Você tem um acesse de log do servidor da web.log com linhas como: 192.168.1.1 – – – [12/Aug/2025:10:00:00] “Get /index.html http /1.1” 200 Digite o modo de saída de tela cheia de tela cheia para encontrar todos os erros 404 e extrair o IP e o URL: Grep “404” Access.log | Awk ‘{imprima $ 1, $ 7}’ Digite o modo de tela cheia Saída de tela cheia: 192.168.1.1 /notfound.html Digite o modo de tela cheia do modo de tela cheia Exemplo 2: JSON LOG DIA DADO UMA JSON LOG API.LOG com entradas: {“Time”: “2025-8-8-13-13-13 API.Log: “/API/Usuários”, “Status”: 200} Digite o modo de saída de tela cheia de tela cheia para substituir “200” por “OK” e filtrar pontos de extremidade começando com “/API”: JQ ‘.[] | SELECT (.ENDPOINT | STARTSWITH (“/API”)) ‘API.LOG | sed ‘s/”status”: 200/”status”: “ok”/g’ inserir modo de tela cheia de saída de tela cheia. Este pipeline usa JQ para filtrar dados JSON e sed para modificar a saída. As melhores práticas e dicas usam expressões regulares com sabedoria: todas as quatro ferramentas suportam o Regex, mas padrões complexos podem ser difíceis de depurar. Padrões de teste incrementalmente. Combine ferramentas em pipelines: Aproveite os tubos do Linux (|) para encadear ferramentas para tarefas complexas. Aprenda opções comuns: Grep: -i (insensível ao caso), -r (recursivo), -v (correspondência invertida). AWK: -F (separador de campo), Blocos iniciais/finais. sed: -i (edição no local), s/padrão/substituir/(substituição). JQ :.[] (Matrizes itera), select () (filtro), map () (transform). Teste antes da edição: sempre teste comandos sem -i (para sed) ou em um arquivo de backup para evitar a perda de dados. Use Man Pages: Run Man Grep, Man Awk, Man sed ou Man JQ para documentação detalhada. Conclusão Grep, Awk, Sed e JQ são ferramentas essenciais para o processamento de texto e dados no Linux. Esteja você pesquisando logs com grep, extraindo campos com AWK, editando arquivos com sed ou analisando o JSON com JQ, essas ferramentas o capacitam a lidar com uma ampla gama de tarefas com eficiência. Ao dominar sua sintaxe e combiná-los em pipelines, você pode automatizar fluxos de trabalho complexos e desbloquear todo o potencial do processamento da linha de comando Linux. Comece a experimentar essas ferramentas em seu próximo projeto e você descobrirá que elas se tornarão partes indispensáveis do seu kit de ferramentas. Feliz processamento de texto!
Fonte
Publicar comentário