fbpx

Comandos Linux – Comando cut

Comando de corte do Linux

Atualizado: 05/04/2019 por Computer Hope

comando de corte

Nos sistemas operacionais do tipo Unix, o comando cut remove (“corta”) seções de cada linha de um arquivo ou arquivos.

Este documento cobre a versão GNU / Linux do cut .

Sintaxe

  corte OPÇÃO ... [ ARQUIVO ] ...

Opções

-b , –bytes = LISTSelecione apenas os bytes de cada linha, conforme especificado em LIST . LIST especifica um byte, um conjunto de bytes ou um intervalo de bytes; consulte Especificando a lista abaixo.
-c , –characters = LISTSelecione apenas os caracteres de cada linha, conforme especificado em LIST . LIST especifica um caractere, um conjunto de caracteres ou um intervalo de caracteres; consulte Especificando a lista abaixo.
-d , –delimiter = DELIMuse o caractere DELIM em vez de uma guia para o delimitador de campo .
-f , –fields = LISTselecione apenas esses campos em cada linha; imprima também qualquer linha que não contenha caracteres delimitadores, a menos que a opção -s seja especificada. LIST especifica um campo, um conjunto de campos ou um intervalo de campos; consulte Especificando a lista abaixo.
-nEsta opção é ignorada, mas está incluída por motivos de compatibilidade.
–complementcomplementa o conjunto de bytes, caracteres ou campos selecionados.
-s–only-delimitednão imprima linhas que não contenham delimitadores.
–output-delimiter=STRINGuse STRING como a string delimitadora de saída. O padrão é usar o delimitador de entrada.
–helpExiba uma mensagem de ajuda e saia.
–versioninformações da versão de saída e saia.

Notas de uso

Ao chamar o corte , use a opção -b , -c ou -f , mas apenas uma delas.

Se nenhum arquivo for especificado, as leituras cortadas da entrada padrão .

Especificando LIST

Cada lista é composta por um número inteiro , um intervalo de números inteiros ou vários intervalos inteiros separados por vírgulas. A entrada selecionada é gravada na mesma ordem em que é lida e é gravada na saída exatamente uma vez. Um intervalo consiste em:

No enésimo byte, caractere ou campo, contado de 1 .
do enésimo byte, caractere ou campo, até o final da linha.
N  Mdo N ao M , byte, caractere ou campo (inclusive).
 Mdo primeiro ao M byte, caractere ou campo.

Por exemplo, digamos que você tenha um arquivo chamado data.txt que contém o seguinte texto:

  um dois três quatro cinco
 alfa beta gama delta epsilon

Neste exemplo, cada uma dessas palavras é separada por um caractere de tabulação, não por espaços. O caractere de tabulação é o delimitador padrão de corte , portanto, por padrão, considerará um campo qualquer coisa delimitada por uma tabulação.

Para “recortar” apenas o terceiro campo de cada linha, use o comando:

  cut -f 3 data.txt

… que produzirá o seguinte:

  três
 gama

Se você deseja “recortar” apenas o campo de segundo a quarto de cada linha, use o comando:

  cut -f 2-4 data.txt

… que produzirá o seguinte:

  dois três quatro
 delta gama beta

Se você deseja “recortar” apenas o campo do primeiro ao segundo e quarto ao quinto de cada linha (omitindo o terceiro campo), use o comando:

  cut -f 1-2,4-5 data.txt

… que produzirá o seguinte:

  um dois quatro cinco
 alfa beta delta epsilon

Ou, digamos que você queira o terceiro campo e todos os campos depois dele, omitindo os dois primeiros. Nesse caso, você pode usar o comando:

  cut -f 3- data.txt

… que produzirá o seguinte:

  três quatro cinco
 gama delta epsilon

A especificação de um intervalo com LIST também se aplica a cortar caracteres tingidos ( -c ) ou bytes ( -b ) de uma linha. Por exemplo, para gerar apenas o caractere de terceira a décima segunda de cada linha de data.txt , use o comando:

  cut -c 3-12 data.txt

… que produzirá o seguinte:

  e dois
 pha beta g

Lembre-se de que o “espaço” entre cada palavra é na verdade um único caractere de tabulação; portanto, as duas linhas de saída exibem dez caracteres: oito caracteres alfanuméricos e dois caracteres de tabulação. Em outras palavras, cortar é omitir os dois primeiros caracteres de cada linha, contando as guias como um caractere cada; caracteres de saída três a doze, contando tabulações como um caracter cada; e omitir caracteres após o décimo segundo.

A contagem de bytes em vez de caracteres resultará na mesma saída nesse caso, porque em um arquivo de texto codificado em ASCII , cada caractere é representado por um único byte (oito bits) de dados. Então o comando:

  cut -b 3-12 data.txt

…, para o nosso arquivo data.txt , produzirá exatamente a mesma saída:

  e dois
 pha beta g

Especificando um delimitador diferente da guia

O caractere de tabulação é o delimitador padrão que o cut usa para determinar o que constitui um campo. Portanto, se os campos do seu arquivo já estiverem delimitados por guias, você não precisará especificar um caractere delimitador diferente.

Você pode especificar qualquer caractere como delimitador, no entanto. Por exemplo, o arquivo / etc / passwd contém informações sobre cada usuário no sistema, um usuário por linha e cada campo de informações é delimitado por dois pontos (” : “). Por exemplo, a linha de / etc / passwd para o usuário root pode ser assim:

  raiz: x: 0: 0: raiz: / raiz: / bin / bash

Esses campos contêm as seguintes informações, na seguinte ordem, separadas por um caractere de dois pontos:

  1. Nome de usuário
  2. Senha (mostrada como x se criptografada )
  3. Número de identificação do usuário (UID)
  4. Número de identificação do grupo (GID)
  5. Campo de comentário (usado pelo comando finger )
  6. Diretório Inicial
  7. Concha

O nome de usuário é o primeiro campo da linha; portanto, para exibir cada nome de usuário no sistema, use o comando:

  cut -f 1 -d ':' / etc / passwd

… que produzirá, por exemplo:

  raiz
 daemon
 bin
 sys
 chope

(Há muito mais contas de usuário em um sistema típico, incluindo muitas contas específicas dos serviços do sistema, mas, neste exemplo, fingiremos que existem apenas cinco usuários.)

O terceiro campo de cada linha no arquivo / etc / passwd é o UID (número de ID do usuário); portanto, para exibir cada nome de usuário e número de ID do usuário, use o comando:

  cut -f 1,3 -d ':' / etc / passwd

… que produzirá o seguinte, por exemplo:

  raiz: 0
 daemon: 1
 bin: 2
 sys: 3
 chope: 1000

Como você pode ver, a saída será delimitada, por padrão, usando o mesmo caractere delimitador especificado para a entrada. Nesse caso, esse é o caractere de dois pontos (” : “). Você pode especificar um delimitador diferente para a entrada e saída, no entanto. Portanto, se você deseja executar o comando anterior, mas a saída é delimitada por um espaço, você pode usar o comando:

  cut -f 1,3 -d ':' - delimitador de saída = '' / etc / passwd
  raiz 0
 daemon 1
 bin 2
 sys 3
 chope 1000

Mas e se você quiser que a saída seja delimitada por uma guia? A especificação de um caractere de tabulação na linha de comando é um pouco mais complicada, porque é um caractere não imprimível. Para especificá-lo na linha de comando, você deve “protegê-lo” do shell. Isso é feito de maneira diferente, dependendo do shell que você está usando, mas no shell padrão do Linux ( bash ), você pode especificar o caractere de tabulação com $ ‘\ t’ . Então o comando:

  cut -f 1,3 -d ':' - delimitador de saída = $ '\ t' / etc / passwd

… produzirá o seguinte, por exemplo:

  raiz 0
 daemon 1
 bin 2
 sys 3
 chope 1000

Exemplos

  cut -c 3 file.txt

Produza o terceiro caractere de cada linha do arquivo file.txt , omitindo os outros.

  cut -c 1-3 file.txt

Saída os três primeiros caracteres de cada linha do arquivo file.txt , omitindo o restante.

  cut -c -3 file.txt

O mesmo que o comando acima. Saída os três primeiros caracteres de cada linha do arquivo.txt .

  cut -c 3- file.txt

Saída do terceiro até os últimos caracteres de cada linha do arquivo file.txt , omitindo os dois primeiros caracteres.

  cut -d ':' -f 1 / etc / passwd

Saída o primeiro campo do arquivo / etc / passwd , onde os campos são delimitados por dois pontos (‘ : ‘). O primeiro campo de / etc / passwd é o nome de usuário , portanto, este comando produzirá todos os nomes de usuário no arquivo passwd .

  grep '/ bin / bash' / etc / passwd |  cut -d ':' -f 1,6

Produza o primeiro e o sexto campos, delimitados por dois pontos, de qualquer entrada no arquivo / etc / passwd que especifique / bin / bash como o shell de login. Este comando produzirá o nome de usuário e o diretório inicial de qualquer usuário cujo shell de login seja / bin / bash .

grep – Filtra o texto que corresponde a uma expressão regular.
colar – Mesclar as linhas correspondentes de arquivos.

14 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.