Guia Completo do Comando cut no Linux - Extraia Apenas as Colunas Desejadas de Logs e Dados CSV!

Visão Geral

No ambiente Linux, quando é necessário extrair rapidamente apenas colunas específicas de arquivos de log volumosos ou dados em formato CSV, o comando cut é a ferramenta mais leve e poderosa. Veremos desde a separação de campos baseada em delimitadores até o fatiamento por bytes e caracteres de largura fixa, abordando técnicas essenciais prontas para aplicação prática.

Extração de Dados de Contas de Sistema e CSV Usando Delimitador (-d) e Campos (-f)

Execute o comando mkdir -p ~/cut_demo && cd ~/cut_demo para criar um diretório dedicado para a prática do comando cut e entrar nele.

mkdir -p ~/cut_demo && cd ~/cut_demo

Crie um arquivo de dados de teste de usuários separado por vírgulas (,) escrevendo o arquivo users.csv com o comando echo.

echo -e ‘id,name,role,department\n1,alice,admin,security\n2,bob,dev,backend\n3,charlie,dev,frontend’ > users.csv

O comando cut é uma ferramenta que extrai apenas colunas (campos), bytes ou intervalos de caracteres específicos a partir de arquivos de texto ou saídas de comandos com base em um delimitador definido.
Com a opção -d, defina a vírgula (,) como delimitador e, com a opção -f, selecione o segundo e o quarto campos para exibir com clareza apenas o nome e o departamento a partir do arquivo users.csv.
⚙️ [Principais Opções]

-d : Especifica diretamente o delimitador a ser usado na divisão dos campos (o padrão é o caractere de tabulação).
-f : Especifica o número ou intervalo dos campos (colunas) a serem extraídos.
-c : Fatia os dados com base na posição por caracteres em vez de bytes.
-b : Fatia os dados com base na posição por bytes.
--complement : Inverte a seleção, exibindo tudo exceto os campos ou intervalos de caracteres especificados.
-s : Não exibe linhas que não contenham o delimitador.
--output-delimiter : Altera a string do delimitador de campos a ser utilizada na exibição do resultado.

cut -d’,’ -f2,4 users.csv

No arquivo /etc/passwd, que armazena informações de contas do sistema Linux, extraia apenas o nome de usuário (campo 1) e o caminho do shell padrão (campo 7) usando os dois-pontos (:) como delimitador e visualize apenas as 5 primeiras linhas com o comando head.
Dessa forma, combinando o comando cut com pipes (|), torna-se simples monitorar apenas as colunas essenciais a partir de arquivos volumosos de configuração do sistema.

cut -d’:’ -f1,7 /etc/passwd | head -n 5

Manipulando Logs de Largura Fixa com Fatiamento por Bytes (-b) e Caracteres (-c)

Para continuar com a prática, execute o comando cd ~/cut_demo para navegar até o diretório de trabalho criado anteriormente.

cd ~/cut_demo

Para praticar o fatiamento por caracteres de largura fixa, crie o arquivo de log de exemplo service.log com data, hora e nível de log gravados em formato padronizado.

echo -e ‘2026-10-07 14:00:01 [INFO] Service started\n2026-10-07 14:00:05 [WARN] High memory usage\n2026-10-07 14:00:12 [ERROR] Connection timed out’ > service.log

Especifique a opção -c1-10 no comando cut para recortar do 1º ao 10º caractere de cada linha, extraindo com clareza apenas a data no formato ano-mês-dia.

cut -c1-10 service.log

Use a opção -c12-19 para isolar e exibir com precisão apenas o carimbo de data/hora no formato hora:minuto:segundo, localizado do 12º ao 19º caractere no arquivo de log.

cut -c12-19 service.log

Ao omitir a posição final, como em -c22-, é possível fatiar de uma vez todo o texto restante a partir do 22º caractere até o final de cada linha, extraindo a área da mensagem.

cut -c22- service.log

Alterando o Delimitador de Saída (–output-delimiter) e Excluindo Campos Específicos (–complement)

Execute o comando cd ~/cut_demo para entrar no diretório onde estão os arquivos de teste criados anteriormente.

cd ~/cut_demo

Com a opção --output-delimiter, é possível definir uma string personalizada para separar os campos extraídos no resultado em vez do delimitador padrão.
No arquivo users.csv, separado por vírgulas (,), extraia os campos 2 e 3 e insira espaços com o caractere pipe (|) entre eles para melhorar a legibilidade.

cut -d’,’ -f2,3 –output-delimiter=’ | ’ users.csv

Ao especificar a opção --complement, todos os campos são exibidos de forma invertida, exceto aqueles que foram selecionados.
Usando-a junto com a opção -f3, apenas o terceiro campo (informações de função) é removido, mantendo e exibindo intactos todos os demais campos.

cut -d’,’ –complement -f3 users.csv

Integração em Pipelines Práticos: Análise Estatística de IPs Conectados com cut, sort e uniq

Para continuar o exercício, execute o comando cd ~/cut_demo para acessar o diretório reservado criado anteriormente.

cd ~/cut_demo

Para simular a análise de requisições de clientes em um servidor web, crie o arquivo de log de amostra access.log contendo IPs de conexão e detalhes de requisições HTTP separados por espaços.

echo -e ‘192.168.1.10 - - [07/Oct/2026] “GET /index.html” 200\n192.168.1.15 - - [07/Oct/2026] “POST /login” 401\n192.168.1.10 - - [07/Oct/2026] “GET /dashboard” 200\n10.0.0.5 - - [07/Oct/2026] “GET /api/v1” 200\n192.168.1.10 - - [07/Oct/2026] “POST /logout” 200’ > access.log

Utilize a opção -d' ' -f1 do comando cut para isolar apenas o endereço IP do cliente, que corresponde à primeira coluna separada por espaço.
Em seguida, ordene os dados com sort, conte as repetições com uniq -c e conecte novamente com sort -nr para obter um ranking estatístico ordenado decrescentemente pelos IPs com maior frequência de conexão.

cut -d’ ’ -f1 access.log | sort | uniq -c | sort -nr

Vimos até aqui como utilizar o comando cut para extrair de forma limpa apenas as colunas desejadas a partir de logs e dados CSV.
Aproveite as opções de delimitadores e campos para tornar suas tarefas diárias de processamento de texto e manipulação de dados ainda mais eficientes.