Guia de Uso do Comando cut no Linux

O comando cut no Linux é uma ferramenta poderosa de processamento de texto usada para extrair seções específicas de cada linha de um arquivo ou de entrada canalizada. Ele não altera o arquivo original, mas simplesmente lê o conteúdo e exibe as partes desejadas na saída padrão. Neste artigo, vamos explorar o propósito do comando cut no Linux e demonstrar como usá-lo por meio de exemplos práticos do mundo real.
Compreendendo o Comando cut
O comando cut é uma ferramenta valiosa para quem trabalha com texto estruturado, permitindo a manipulação e extração de dados de forma eficiente em sistemas semelhantes ao Unix. Ele extrai partes de uma linha com base em posições de bytes, posições de caracteres, delimitadores ou campos. Isso o torna especialmente útil para filtrar e organizar dados em scripts de shell e operações de linha de comando. Também é útil para tarefas como recuperar colunas de arquivos CSV, recortar caracteres ou analisar arquivos de log. Embora seja comumente usado com arquivos, o comando cut também pode processar a saída de outros comandos quando usado em um pipeline.
Sintaxe Básica do Comando cut
O comando cut tem uma sintaxe muito simples que usa opções e um nome de arquivo. Aqui está como funciona:
cut[OPÇÕES][ARQUIVO]Aqui, as OPÇÕES permitem controlar como o comando cut funciona. Você pode escolher um separador de campo (como uma vírgula), selecionar certos campos, definir intervalos de campos, ignorar linhas sem o separador, etc. ARQUIVO é o arquivo-alvo de onde você deseja extrair dados. O comando cut irá ler da entrada padrão se você não especificar um arquivo. Além disso, você pode especificar múltiplos arquivos; nesse caso, o comando cut os tratará como um, combinando seus conteúdos antes de processá-los.
Opções Comuns Usadas
O comando cut permite extrair partes específicas de texto de um arquivo ou entrada. Você pode informar o que extrair usando diferentes opções, como bytes, caracteres ou campos, e definindo um separador específico (delimitador). Aqui estão as opções comuns:
- -f ou –fields=LISTA: Seleciona campos específicos com base em um delimitador escolhido.
- -b ou –bytes=LISTA: Extrai certos bytes de cada linha.
- -c ou –characters=LISTA: Retira caracteres específicos de cada linha.
- -d ou –delimiter: Define um delimitador personalizado em vez do padrão, que é a tabulação.
- –complement: Mostra tudo exceto os campos, bytes ou caracteres selecionados.
- -s ou –only-delimited: Ignora linhas que não têm o delimitador. Por padrão, tais linhas são incluídas.
- –output-delimiter: Permite escolher um delimitador diferente para a saída. Por padrão, o cut usa o mesmo delimitador que a entrada.
As opções -f, -b e -c usam uma LISTA para definir o que extrair, como campos, bytes ou caracteres. 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 (significando extrair de 2 a 4)
N-para significar da posição N até o final-Mpara significar do início até a posição M
Como o Comando cut Funciona no Linux
Vamos passar por alguns exemplos práticos para entender como o comando cut funciona no Linux. Para isso, primeiro crie um arquivo chamado “mte.csv” usando o comando echo:
echo -e "empID,empName,empDesig\n101,Anees,Author\n102,Asghar,Manager\n103,Damian,CEO"> mte.csvVamos verificar o conteúdo do arquivo usando o comando cat:
cat mte.csv
Aqui, é importante notar que o comando cut não muda o arquivo, em vez disso, ele apenas mostra a saída selecionada com base no que você pede.
Extraindo Dados por Caracteres
Use a opção -c junto com o comando cut para extrair caracteres por posição:
cut -c1,8 mte.csvEste comando extrai o primeiro e o oitavo caracteres de cada linha:
Para extrair caracteres entre posições específicas ou intervalos, podemos usar o comando cut da seguinte forma:
cut -c1-8 mte.csvEste comando extrai os caracteres da primeira à oitava posição de cada linha:
Extraindo por Byte
Podemos usar a opção -b com o comando cut para extrair bytes específicos de cada linha:
cut -b1-3 mte.csvEste comando extrai os primeiros três bytes de cada linha do arquivo chamado mte.csv:
Extraindo por Campo (Coluna)
Você pode extrair um campo inteiro de um arquivo usando o comando cut. Para isso, use -f com a opção -d, da seguinte forma:
cut -d',' -f2 mte.csvNeste comando, -d',' define o delimitador como uma vírgula, e -f2 indica ao cut para extrair o segundo campo de cada linha no arquivo mte.csv:
Usando Delimitadores Personalizados no cut
O comando cut usa uma tabulação como delimitador, por padrão. No entanto, se seus campos são separados por algo que não seja uma tabulação, use -d para definir o correto. Por exemplo, podemos obter a quinta palavra de uma frase separada por espaços usando o delimitador -d, conforme segue:
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d' ' -f5Ignorando Certos Campos Durante a Extração
Você pode excluir campos específicos ao extrair texto de um arquivo usando a opção --complement com o comando cut. Esta opção instrui o comando cut a exibir todos os campos, exceto os especificados:
cut -d',' -f1 mte.csv --complementEste comando ignorará a primeira coluna e retornará o restante do conteúdo:
Mudando o Delimitador Padrão na Saída
Por padrão, o comando cut preserva o delimitador de entrada na saída ao extrair campos. No entanto, você pode mudar o delimitador de saída usando a opção --output-delimiter ao trabalhar com extrações baseadas em campos:
cut -d',' -f1-3 --output-delimiter='-' mte.csvEste comando usa o hífen - como separador na saída:
Usando cut com Outros Comandos Úteis do Linux
Você também pode usar cut com outros comandos do Linux usando o símbolo de pipeline. Por exemplo, o seguinte comando extrai os primeiros 5 caracteres de cada linha da saída do comando who:
who | cut -c1-5No exemplo seguinte, usamos o comando cut junto com head para exibir as duas primeiras linhas do arquivo “mte.csv” e extrair apenas os campos empName e empDesig:
head -n2 mte.csv | cut -d',' -f2,3Gerenciando Formatos de Dados Irregulares com o Comando cut do Linux
O comando cut funciona melhor quando os dados estão organizados de forma ordenada, com o mesmo delimitador (como uma vírgula ou tabulação) separando cada parte. Mas se o arquivo tiver espaços desiguais ou delimitadores mistos, o cut pode não funcionar bem por conta própria. Nesses casos, é útil primeiro limpar os dados usando comandos como tr ou sed para garantir que o cut consiga extrair as partes corretas.
Lidando com Espaços Extras
Considere um arquivo chamado “mteData.txt” onde os campos são separados por múltiplos espaços, como mostrado abaixo:
cat mteData.txtComo o cut espera um único delimitador consistente, podemos simplificar o espaçamento usando tr antes de aplicar o cut:
cat mteData.txt | tr -s ' ' | cut -d' ' -f1-2Este comando lê o conteúdo de “mteData.txt”, usa tr para substituir múltiplos espaços por um único espaço e, em seguida, usa cut para extrair os primeiros dois campos separados por espaço:
Lidando com Delimitadores Mistos
Se um arquivo usar uma combinação de espaços e vírgulas como delimitadores, podemos normalizar o formato usando sed. Por exemplo, um arquivo chamado “mteData1.txt” contém o seguinte conteúdo:
cat mteData1.txtVamos usar o comando sed junto com o comando cut para substituir todos os espaços por uma vírgula e em seguida extrair os primeiros e terceiros campos separados por vírgula:
sed 's/ /,/g' mteData1.txt | cut -d',' -f1,3Conclusão
Neste artigo, exploramos o comando cut do Linux, uma ferramenta útil no Linux para extrair dados de arquivos ou entrada canalizada. Com sua sintaxe simples, você pode facilmente obter caracteres, bytes ou campos com base em um delimitador. Também demonstramos como usar o comando cut com outros comandos como tr, sed e head para gerenciar dados desorganizados e simplificar a saída. Seja você trabalhando com arquivos CSV, analisando logs ou limpando dados, o comando cut é uma ferramenta indispensável para processamento de texto em sistemas semelhantes ao Unix.