Cut Command no Linux

Existem muitos utilitários disponíveis nos sistemas Linux e Unix que permitem processar e filtrar arquivos de texto. cut é um utilitário de linha de comando que permite cortar partes de linhas de arquivos especificados ou dados canalizados e imprimir o resultado na saída padrão. Ele pode ser usado para cortar partes de uma linha por delimitador, posição de byte e caractere.

Neste artigo, mostraremos como usar o cut comando através de exemplos práticos e explicações detalhadas das opções mais comuns.

Como usar o comando cut #

A sintaxe para o cut comando é o seguinte:

As opções que informam cut se deve usar um delimitador, posição de byte ou caractere ao cortar partes selecionadas das linhas são as seguintes:

Você pode usar um, e apenas uma das opções listadas acima.

Outras opções são :

  • -d (--delimiter) – Especifique um delimitador que será usado em vez do padrão ” TAB ”delimitador.
  • --complement – Complementa a seleção. Ao usar esta opção, cut exibe todos os bytes, caracteres, ou campos exceto o se selecionado.
  • -s (--only-delimited) – Por padrão cut imprime as linhas que não contêm nenhum caractere delimitador. Quando esta opção é usada, cut não imprime linhas que não contenham delimitadores.
  • --output-delimiter – O comportamento padrão de cut é usar o delimitador de entrada como o delimitador de saída. Esta opção permite que você especifique uma string delimitadora de saída diferente.

O comando cut pode aceitar zero ou mais nomes de ARQUIVOS de entrada. Se nenhum FILE for especificado ou quando FILE for -, cut será lido da entrada padrão.

O argumento LIST passado para -f , -b e -c as opções podem ser um número inteiro, vários números inteiros separados por vírgulas, um intervalo de inteiros ou vários intervalos de inteiros separados por vírgulas . Cada intervalo pode ser um dos seguintes:

  • N o enésimo campo, byte ou caractere, começando em 1.
  • N- do enésimo campo, byte ou caractere, até o final da linha.
  • N-M do enésimo para o Mth campo, byte ou caractere.
  • -M do primeiro ao Mth campo, byte ou caractere.

Como cortar por campo #

Para especificar os campos que devem ser cortados, invoque o comando com a opção -f. Quando não especificado, o delimitador padrão é “TAB”.

Nos exemplos abaixo, usaremos o seguinte arquivo. Os campos são separados por tabulações.

test.txt

Por exemplo, para exibir o primeiro e o terceiro campos, você usaria:

Ou se você deseja exibir do 1º ao 4º campo:

Como cortar com base em um delimitador #

Para cortar com base em um delimitador, invoque o comando com -d, seguida pelo delimitador que deseja usar.

Por exemplo, para exibir o primeiro e o terceiro campos usando “:” como delimitador, você digitaria:

Você pode usar qualquer caractere único como delimitador. No exemplo a seguir, usamos o caractere de espaço como delimitador e imprimimos o segundo campo:

Como complementar a seleção #

Para complementar a lista de campos de seleção, use a opção --complement. Isso imprimirá apenas os campos que não foram selecionados com a opção -f.

O comando a seguir imprimirá todos os campos, exceto o primeiro e o terceiro:

Como especificar um delimitador de saída #

Para especificar o delimitador de saída, use o --output-delimiter opção. Por exemplo, para definir o delimitador de saída para _, você usaria:

Como cortar por bytes e caracteres #

Antes de prosseguir, vamos fazer uma distinção entre bytes e caracteres.

Um byte tem 8 bits e pode representar 256 valores diferentes. Quando o padrão ASCII foi estabelecido, ele levou em consideração todas as letras, números e símbolos necessários para trabalhar com o inglês. A tabela de caracteres ASCII possui 128 caracteres e cada caractere é representado por um byte.Quando os computadores começaram a se tornar globalmente acessíveis, as empresas de tecnologia começaram a introduzir novas codificações de caracteres para diferentes idiomas. Para idiomas com mais de 256 caracteres, um mapeamento simples de 1 para 1 não era possível. Isso leva a diferentes problemas, como compartilhamento de documentos ou navegação em sites, e um novo padrão Unicode que pode lidar com a maioria dos sistemas de escrita do mundo era necessário. O UTF-8 foi criado para resolver esses problemas. No UTF-8, nem todos os caracteres são representados com 1 byte. Os caracteres podem ser representados com 1 byte a 4 bytes.

A opção -b (--bytes) diz ao comando para corte seções de cada linha especificada pelas posições de byte fornecidas.

Nos exemplos a seguir, estamos usando o caractere ü que ocupa 2 bytes.

Selecione o 5º byte:

Selecione o 5º, 9º e 13º bytes:

Selecione o intervalo do 1º ao 5º byte:

No momento da redação deste artigo, a versão do cut empacotado no GNU coreutils não tinha uma opção para cortar por caracteres. Ao usar a opção -c, cut se comporta da mesma forma que ao usar a opção -b.

Exemplos de corte #

O comando cut geralmente é usado em combinação com outros comandos por meio de tubulação. Aqui estão alguns exemplos:

Obtenha uma lista de todos os usuários #

A saída do comando getent passwd é passada para cut, que imprime o primeiro campo usando : como delimitador.

A saída mostra uma lista de todos os usuários do sistema.

Veja os 10 comandos usados com mais frequência #

No exemplo a seguir, cut é usado para retirar os primeiros 8 bytes de cada linha da saída do comando history.

Conclusão #

cut O comando é usado para exibir campos selecionados de cada linha de arquivos fornecidos ou da entrada padrão.

Embora muito útil, cut tem algumas limitações. Não suporta a especificação de mais de um caractere como delimitador e não oferece suporte a delimitadores múltiplos.

Deixe uma resposta

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