Guia completo para usar o comando Cut do Linux

Guia completo para usar o comando Cut do Linux

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 cutcomando é 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, -be -cutilizam 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.
  • -Mpara 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

Comando de eco

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

cat mte.csv

Mostrar dados do arquivo

É 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 -copção com o comando cut:

cut -c 1, 8 mte.csv

Este comando extrai o primeiro e o oitavo caracteres de cada linha:

Cortado por caracteres

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:

Corte por intervalo

Extraindo por Byte

Para extrair bytes específicos, utilize a -bopçã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:

Cortado por bytes

Extraindo por campo (coluna)

Para extrair um campo inteiro de um arquivo, utilize o comando cut com as opções -fe :-d

cut -d', ' -f2 mte.csv

Neste comando, -d', 'designa uma vírgula como delimitador, enquanto -f2indica que cut deve extrair o segundo campo de cada linha:

Corte por campo

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 -dpara 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

Corte com delimitador personalizado

Excluindo campos específicos durante a extração

Você pode omitir certos campos ao extrair texto de um arquivo, empregando a --complementopçã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:

Corte com complemento

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-delimiteropção:

cut -d', ' -f1-3 --output-delimiter='-' mte.csv

Este comando utiliza um hífen como separador na saída:

Delimitador de saída personalizado

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 whocomando:

who | cut -c 1-5

Cortado com quem

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

Corte com cabeça

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 trou 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

Mostrar dados de amostra

Como o corte antecipa um único delimitador, utilize trpara 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 tre, em seguida, extrai os dois primeiros campos:

Corte com Tr

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

Mostrar conteúdo de amostra

Utilize sedcom 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

Corte com Sed

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, sede headpara 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 -dopção seguida do caractere delimitador desejado. Por exemplo, para usar uma vírgula como delimitador, você usaria -d', '.

Fonte e Imagens

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *