
O comando cut no Linux é um utilitário essencial para processamento de texto, projetado para extrair segmentos específicos de cada linha de um arquivo ou de uma entrada canalizada. Este comando não modifica o arquivo original, mas lê os dados e exibe as partes desejadas na saída padrão. Neste guia, vamos nos aprofundar na funcionalidade do comando cut no Linux e fornecer exemplos práticos e reais para demonstrar seu uso.
Explorando o comando cut
O cut
comando é fundamental para quem lida com texto estruturado, facilitando a manipulação e extração eficazes de dados em ambientes do tipo Unix. Ao extrair trechos de uma linha com base em posições de bytes, posições de caracteres, separadores ou campos, cut se mostra inestimável para filtrar e organizar dados em scripts de shell e operações de linha de comando. Suas aplicações variam desde a recuperação de colunas específicas de arquivos CSV até a remoção de caracteres desnecessários ou a análise de logs. Embora frequentemente empregado diretamente com arquivos, cut também interage perfeitamente com a saída de outros comandos quando utilizado em um pipeline.
Sintaxe básica do comando cut
O comando cut é simples, utilizando opções seguidas de um nome de arquivo. A sintaxe é a seguinte:
cut [OPTIONS] [FILE]
Nessa estrutura, OPÇÕES determinam como o comando cut opera, permitindo selecionar um separador de campo (como uma vírgula), escolher campos específicos, definir intervalos e excluir linhas sem o separador, entre outras funcionalidades. Se um arquivo não for especificado, cut lerá da entrada padrão. Além disso, você pode fornecer vários arquivos, que serão tratados como uma entidade combinada para processamento.
Opções comumente usadas
O comando recortar oferece uma variedade de opções para identificar segmentos exatos de texto a serem extraídos. Aqui estão algumas das mais utilizadas:
- -f ou –fields=LIST : Permite a seleção de campos específicos com base em um delimitador designado.
- -b ou –bytes=LIST : Extrai bytes especificados de cada linha.
- -c ou –characters=LIST : Recupera caracteres específicos de cada linha.
- -d ou –delimiter : define um delimitador personalizado em vez da tabulação padrão.
- –complement : gera tudo, exceto os campos, bytes ou caracteres especificados.
- -s ou –only-delimited : ignora linhas sem o delimitador; tais linhas são incluídas por padrão.
- –output-delimiter : Permite a seleção de um delimitador diferente para a saída, contrastando com o delimitador de entrada.
As opções -f
, -b
e -c
utilizam uma LISTA para definir o que extrair. Você pode especificar o seguinte:
- Um único número como 2.
- Vários números separados por vírgulas, como 1, 3, 5.
- Um intervalo como 2-4 (para extrair valores de 2 a 4).
-
N-
para denotar a extração da posição N até o final. -
-M
para significar extração do início até a posição M.
Utilizando o comando cut no Linux
Para ilustrar o funcionamento do comando cut, vamos executar alguns exemplos práticos. Primeiro, vamos criar um arquivo de exemplo chamado “mte.csv” usando o comando echo:
echo -e "empID, empName, empDesig\n101, Anees, Author\n102, Asghar, Manager\n103, Damian, CEO" > mte.csv

Em seguida, podemos verificar o conteúdo do arquivo usando o comando cat:
cat mte.csv

É crucial mencionar que o comando cut apenas apresenta a saída especificada, sem alterar o arquivo em si.
Extraindo dados por caracteres
Para extrair caracteres por posição, utilize a -c
opção com o comando cut:
cut -c 1, 8 mte.csv
Este comando extrai o primeiro e o oitavo caracteres de cada linha:

Para extrair caracteres dentro de um intervalo especificado, aplique o seguinte comando:
cut -c 1-8 mte.csv
Isso extrai caracteres das posições 1 a 8 em cada linha:

Extraindo por Byte
Para extrair bytes específicos, utilize a -b
opção com o comando cut:
cut -b 1-3 mte.csv
Este comando extrai os três primeiros bytes de cada linha do arquivo mte.csv
:

Extraindo por campo (coluna)
Para extrair um campo inteiro de um arquivo, utilize o comando cut com as opções -f
e :-d
cut -d', ' -f2 mte.csv
Neste comando, -d', '
designa uma vírgula como delimitador, enquanto -f2
indica que cut deve extrair o segundo campo de cada linha:

Implementando delimitadores personalizados em corte
Embora o cut use, por padrão, uma tabulação como delimitador, se os campos forem separados por um caractere diferente, use -d
para especificar o caractere correto. Por exemplo, para extrair a quinta palavra de uma frase separada por espaços, você pode usar:
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d ' ' -f 5

Excluindo campos específicos durante a extração
Você pode omitir certos campos ao extrair texto de um arquivo, empregando a --complement
opção com o comando cut. Esta opção especifica que o comando cut deve gerar todos os campos, exceto os designados:
cut -d', ' -f1 mte.csv --complement
Este comando ignora a primeira coluna e retorna o restante do conteúdo:

Modificando o delimitador de saída padrão
Por padrão, ao extrair campos, o comando cut mantém o delimitador de entrada na saída. No entanto, você pode alterar o delimitador de saída usando a --output-delimiter
opção:
cut -d', ' -f1-3 --output-delimiter='-' mte.csv
Este comando utiliza um hífen como separador na saída:

Combinando cut com outros comandos Linux
O comando cut também pode ser utilizado em conjunto com outros comandos Linux usando o símbolo | do pipeline. Por exemplo, o comando a seguir extrai os cinco primeiros caracteres de cada linha de saída do who
comando:
who | cut -c 1-5

Em outro exemplo, você pode usar o comando cut junto com head para exibir as duas primeiras linhas de “mte.csv”, extraindo apenas os campos empName e empDesig:
head -n 2 mte.csv | cut -d ', ' -f2, 3

Navegando em formatos de dados irregulares com o comando cut do Linux
O comando cut é excelente para lidar com dados bem formatados com delimitadores consistentes (como vírgulas ou tabulações).No entanto, se você encontrar arquivos com espaçamento inconsistente ou delimitadores mistos, aplicar apenas cut pode gerar resultados insatisfatórios. Para lidar com esses cenários, geralmente é benéfico limpar os dados com antecedência usando comandos como tr
ou sed
, garantindo que cut possa extrair efetivamente as partes corretas.
Gerenciando Espaços Excessivos
Considere um arquivo chamado “mteData.txt” onde os campos são separados por espaços variados:
cat mteData.txt

Como o corte antecipa um único delimitador, utilize tr
para normalizar o espaçamento antes de aplicar o corte:
cat mteData.txt | tr -s ' ' | cut -d ' ' -f1-2
Este comando processa “mteData.txt”, substitui vários espaços por um único usando tr
e, em seguida, extrai os dois primeiros campos:

Gerenciando delimitadores mistos
Nos casos em que um arquivo usa uma combinação de espaços e vírgulas, normalize o formato com sed
. Por exemplo, um arquivo chamado “mteData1.txt” contém:
cat mteData1.txt

Utilize sed
com cut para converter todos os espaços em vírgulas e então extrair o primeiro e o terceiro campos:
sed 's/ /, /g' mteData1.txt | cut -d ', ' -f1, 3

Conclusão
Ao longo deste artigo, revelamos as funcionalidades do comando cut do Linux, uma ferramenta vital para extrair dados de arquivos ou entradas canalizadas. Com sua sintaxe simples, você pode obter facilmente caracteres, bytes ou campos com base em um delimitador especificado. Além disso, mostramos como combinar o comando cut com outros utilitários, como tr
, sed
e head
para gerenciar dados sujos e obter uma saída mais eficiente. Seja para manipular arquivos CSV, analisar logs ou limpar dados, o comando cut é um recurso indispensável para o processamento de texto em ambientes do tipo Unix.
Perguntas frequentes
1. Qual é o objetivo principal do comando cut no Linux?
O comando cut no Linux é usado principalmente para extrair trechos específicos de texto de arquivos ou da saída de outros comandos. Ele permite que os usuários manipulem e formatem dados de forma eficaz com base em delimitadores, posições de bytes ou posições de caracteres.
2. Posso combinar o comando cut com outros comandos do Linux?
Sim! O comando cut pode ser perfeitamente integrado a outros comandos do Linux usando o símbolo de pipeline (|).Isso permite um processamento de dados poderoso, possibilitando filtrar e formatar saídas de vários comandos.
3. Como posso especificar um delimitador personalizado ao usar o comando cut?
Você pode especificar um delimitador personalizado usando a -d
opção seguida do caractere delimitador desejado. Por exemplo, para usar uma vírgula como delimitador, você usaria -d', '
.
Deixe um comentário