Android

Comando de corte do Linux com exemplos

Comando tee

Comando tee

Índice:

Anonim

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. Pode ser usado para cortar partes de uma linha por delimitador, posição de byte e caractere.

Neste tutorial, mostraremos como usar o comando de corte do Linux por meio de exemplos práticos e explicações detalhadas das opções de corte mais comuns.

Como usar o comando Recortar

A sintaxe para o comando recortar é a seguinte:

cut OPTION……

Ao usar o comando recortar, você deve usar uma e apenas uma das seguintes opções:

  • -f ( --fields=LIST ) - Selecione especificando um campo, um conjunto de campos ou um intervalo de campos. Essa é a opção mais usada. -b ( --bytes=LIST ) - Selecione especificando um byte, um conjunto de bytes ou um intervalo de bytes. -c ( --characters=LIST ) - Selecione especificando um caractere, um conjunto de caracteres ou um intervalo de caracteres.

Outras opções são:

  • -d ( --delimiter ) - Especifique um delimitador que será usado em vez do delimitador "TAB" padrão. --complement - complementa a seleção. Ao usar esta opção, o recorte exibirá todos os bytes, caracteres ou campos, exceto os selecionados. -s ( --only-delimited ) - Por padrão, o corte imprimirá qualquer linha que não contenha caracteres delimitadores. Ao usar esta opção, o recorte não imprimirá linhas que não contenham delimitadores. --output-delimiter - O padrão é usar o delimitador de entrada como delimitador de saída. Esta opção permite especificar uma sequência diferente de delimitador de saída.

O comando cut pode aceitar zero ou mais nomes de FILE de entrada. Se nenhum arquivo for especificado ou quando o arquivo for - , o corte lerá a entrada padrão.

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

  • No enésimo campo, byte ou caractere, iniciando em 1. N- no enésimo campo, byte ou caractere, até o final da linha. NM do Nésimo ao Mésimo campo, byte ou caractere. -M do primeiro ao Mésimo campo, byte ou caractere.

Como cortar por campo

O comando Recortar é usado principalmente para exibir os campos selecionados de cada linha de arquivos ou da entrada padrão. Quando não especificado, o delimitador padrão é "TAB".

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

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

Para exibir o 1º e o 3º campo, você usaria:

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

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

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

Como cortar com base em um delimitador

Para recortar com base em um delimitador, use a opção -d seguida do delimitador que você deseja usar.

Por exemplo, para exibir os 1º e 3º campos usando “:” como delimitador, digite:

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

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

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

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 estão selecionados com a opção -f .

O comando a seguir imprimirá todos os campos, exceto o 1º e o 3º:

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

Como especificar um delimitador de saída

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

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

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 popularizar globalmente, as empresas de tecnologia começaram a introduzir novas codificações de caracteres para idiomas diferentes e 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 o compartilhamento de documentos ou a navegação em sites, sendo necessário um novo padrão Unicode capaz de lidar com a maioria dos sistemas de escrita do mundo. 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.

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

Use a opção -b ( --bytes ) para cortar uma seção de uma linha especificando uma posição de byte.

Selecione o quinto byte:

echo 'drüberspringen' | cut -b 5

b

Selecione os bytes 5, 9 e 13:

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

Selecione o intervalo de 1 a 5 bytes:

echo 'drüberspringen' | cut -b 1-5

drüb

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

Exemplos de corte

O comando de corte é geralmente usado em combinação com outros comandos através da tubulação. Aqui estão alguns exemplos.

Obter uma lista de todos os usuários

A saída do comando getent passwd é passada para cut que imprime o 1º arquivado usando : como delimitador.

getent passwd | cut -d ':' -f1

Veja os 10 comandos mais usados

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

history | cut -c8- | sort | uniq -c | sort -rn | head

Conclusão

Até agora você deve ter um bom entendimento de como usar o comando de corte do Linux. Embora muito útil, o comando cut tem algumas limitações. Ele não suporta a especificação de mais de um caractere como delimitador e não suporta vários decímetros.

terminal de corte