Comando Linux Cut

Comando Linux Cut

Considere a seguinte tabela de funcionários, produzida em um editor de texto com uma fonte de largura fixa, como Courier:

Nome Data de nascimento Tempo de nascimento Especialidade Data empregada Tempo empregado
John 11-05-91 10:11:12 Engenheiro 12-06-14 13:14:15
Paulo 03-16-86 16:17:18 Contador 06-19-15 19:20:21
Peter 07-20-81 Carpinteiro 08-21-16
Mary 22:23:24 Arquiteto 01:02:03
Susan 04-17-87 17:22:36 secretário 21-49-55 08:43:32

Suponha que esses dados estejam em um arquivo chamado, funcionário.txt, em um diretório de usuário do Linux. Existem seis colunas de texto com seis títulos, que são nome, data de nascimento, hora de nascimento, etc. Existem seis fileiras que consistem em uma fila de cabeçalho e cinco linhas de dados. Então, esta é uma tabela de colunas e linhas (linhas). O conteúdo de cada célula de tabela é chamado de campo. Um campo também é uma sub-cordão. Como uma fonte de largura fixa foi usada, existem colunas de caracteres. Cada coluna de texto tem colunas de caracteres. Então, existem colunas de personagens e colunas de campos.

Para digitar a tabela, comece com a linha do cabeçalho. Digite o primeiro campo e pressione a tecla TAB no teclado. Digite o próximo campo e pressione a tecla TAB. Continue dessa maneira até depois do último campo do cabeçalho. Pressione a tecla Enter. Quando a tecla de guia é pressionada, o personagem '\ t' é inserido no código do arquivo, não visto pelo usuário. No entanto, é visto pelo usuário como um espaço (que pode ser longo). Quando a tecla Enter é pressionada no final da linha, o personagem '\ n' é inserido no código do arquivo, não visto pelo usuário. A tecla de guia é contada como um personagem.

Cada uma das linhas de dados é digitada da mesma maneira. No entanto, se um campo estiver em branco, ele deve ser preenchido pressionando a tecla da barra espacial até que a tecla da guia seja pressionada para ir para a próxima coluna de texto; para que o início do próximo campo, alinhe com o início de sua coluna de texto.

Para o editor de texto do Ubuntu, a tecla de guia abrange oito caracteres. Então, quando a tecla de guia é pressionada, o número de caracteres que ela acrescenta é tal que, se o campo estivesse cheio de caracteres, o número de caracteres seria um múltiplo de oito. Não se esqueça que, no final de uma linha, a tecla Enter deve ser pressionada, e essa ação insere um caractere no código, não visto pelo usuário. Quando a tecla de guia é pressionada, um único caractere é inserido no código, não visto pelo usuário. Então, a tecla de guia é contada como um personagem.

As linhas são delimitadas pelos personagens da Newline. Os campos são delimitados pelos caracteres da guia. Os campos não devem necessariamente ser tão clássicos como descrito acima. O delimitador não deve necessariamente ser um personagem de guia. Na tabela acima, ':' pode ser considerada um delimitador, em vez da guia. Nesse caso, os sub-strings em cada linha serão re-partidários. Por exemplo, no campo da guia no tempo do nascimento, ':' delimitaria duas colunas de dois caracteres (nas duas extremidades). Para esta mesma tabela, a primeira linha e a linha para Peter não teriam nenhum delimitador. Toda essa linha se torna seu campo.

A delimitando as colunas de personagens pode atravessar campos de guias. Por exemplo, o último ':' no campo da guia no tempo do nascimento e o primeiro ':' no campo de guia empregados, delimita colunas de caracteres, cruzando os campos da guia e os caracteres da guia. Outros personagens delimitadores, como vírgulas, também podem ser encontrados em outros arquivos.

Conteúdo do artigo

  • Corte a sintaxe
  • Cortando colunas de campo
  • Cortando colunas de bytes
  • Cortando colunas de personagens
  • Delimitador
  • A opção -s
  • A opção de comprimido
  • Conclusão

Corte a sintaxe

O comando de corte copia as colunas por caracteres ou por campos, com base em determinadas opções e seus valores. Também pode copiar linhas, mas as condições para copiar linhas são limitadas. Ele pode copiar um conjunto de colunas e linhas; Ainda as condições para as linhas envolvidas, são limitadas. Linhas são linhas. A sintaxe é:

Opção de corte… [arquivo]…

Pode haver mais de um arquivo. No entanto, este tutorial usa apenas um arquivo cujo nome é funcionário.txt no diretório do usuário e com o conteúdo acima. Se não houver argumento de arquivo, corte leituras da entrada padrão. Cut é um comando linux shell com diferentes opções possíveis. Algumas opções recebem valores.

A contagem de colunas começa em 1 e não zero. Portanto, a coluna do primeiro caractere (à esquerda) é a coluna 1; A coluna do segundo caractere é a coluna 2; A coluna do terceiro caractere é a coluna 3 e assim por diante. A primeira coluna de campo (à esquerda) é a coluna de campo 1; A segunda coluna de campo é a coluna de campo 2; A terceira coluna de campo é a coluna de campo 3 e assim por diante.

Portanto, o comando de corte copia as seções de linhas em um arquivo, como foi apontado. Normalmente imprime o resultado da saída padrão.

Cortando campos

Cortar campos significa copiar campos. O arquivo original permanece intacto. A opção -f é usada para isso, onde f significa campo. -f usa o caractere da guia como seu delimitador. Então, em

$ CUT -F 1,3 funcionário.TXT

-f significa o comando copia campos e não personagens ou bytes. O valor para -f é 1 e 3 separado por vírgulas e sem espaço. Isso significa enviar para saída padrão, colunas de campo 1 e 3. O resultado é:

Nome Tempo de nascimento
John 10:11:12
Paulo 16:17:18
Peter
Mary 22:23:24
Susan 17:22:36

Se as colunas de campo, 1, 3, 5 fossem necessárias, o valor para -f teria sido 1,3,5 números separados por vírgulas, e sem espaço. É assim que as colunas de campo podem ser escolhidas. Nesse caso, a guia é o delimitador.

Gama de colunas de campo

O comando a seguir seleciona colunas de campo da coluna de campo, 2 para coluna de campo, 5, inclusive:

$ CUT -F 2-5 funcionário.TXT

A saída é:

Data de nascimento Tempo de nascimento Especialidade Data empregada
11-05-91 10:11:12 Engenheiro 12-06-14
03-16-86 16:17:18 Contador 06-19-15
07-20-81 Carpinteiro 08-21-16
22:23:24 Arquiteto
04-17-87 17:22:36 secretário 21-49-55

Observe o hífen entre 2 e 5 para indicar o intervalo.

Cópia de um número de campo, n e acima

O comando a seguir copia da quinta coluna de campo e acima:

$ corte -f 5- funcionário.TXT

Observe o hífen logo após 5, sem espaço intermediário. O resultado é:

Data empregada Tempo empregado
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Copiando o número do campo abaixo, n

O comando a seguir, copia a segunda coluna de campo e os abaixo:

$ cut -f -funcionário.TXT

Observe o hífen pouco antes das 2, sem espaço intermediário. O resultado é:

Nome Data de nascimento
John 11-05-91
Paulo 03-16-86
Peter 07-20-81
Mary
Susan 04-17-87

Cortando colunas de bytes

As colunas de bytes são copiadas de maneira semelhante às colunas de campo. Se o código ASCII estiver em vigor, então um byte é um personagem. Nesse caso, uma guia (\ t) é um personagem e, se copiado, terá seu efeito de levar o cursor para onde o nono personagem deve ser. A opção para bytes é -b. O comando a seguir ilustra isso para as colunas do segundo, terceiro e quarto byte (caracteres):

$ CUT -B 2,3,4 funcionário.TXT

A saída é:

AME
Ohn
AUL
ete
ary
EUA

Efeito da guia

O comando a seguir exibe colunas de bytes do primeiro ao décimo:

$ CUT -B 1-10 funcionário.TXT

A saída é:

Nome Data
John 11-05
Paulo 03-
Peter
Mary 07-2
Susan 04-1

O número de bytes (caracteres) em cada linha não é o mesmo porque (a) existem dois personagens espaciais depois de Paulo, no campo de Paulo; e (b) o caractere da guia é contado como um caractere (e tem seu efeito).

Cortando colunas de personagens

As colunas de caracteres são tratadas da mesma maneira que as colunas de bytes. De fato, ao lidar com a codificação de personagens de vários bytes, use caracteres, em vez de bytes. A opção para os caracteres é -C. Os dois comandos a seguir reproduzem as duas saídas anteriores (em ordem):

$ CUT -C 2,3,4 funcionário.TXT
$ CUT -C 1-10 funcionário.TXT

Delimitador

Em vez de usar o caractere da guia para separar sub-strings, delimitadores como ':', '-', ',', etc. pode ser usado. Esse delimitador re-parcelas sub-rastreias que formam a linha. Em outras palavras, em vez de os campos serem separados pelo caractere da guia, eles são separados pelo novo delimitador. Os comandos neste caso são semelhantes aos comandos de campo com a opção -f, mas com a opção -d para delimitador, incluído. O comando a seguir copia os dois primeiros campos com base no delimitador '-'.

$ corte -d ' -' -f 1,2 funcionário.TXT

A saída é:

Nome Data de nascimento Tempo de nascimento Especialidade Data empregada Tempo empregado
John 11-05
Paulo 03-16
Peter 07-20
Mary 22:23:24 Arquiteto 01:02:03
Susan 04-17

Este resultado está logicamente correto. Toda a primeira linha foi exibida, pois não tem '-'. Toda a quinta fila foi exibida, pois não tem '-'. O personagem da guia agora é apenas um personagem, embora ainda tenha seu efeito. A fila para Paul, por exemplo, "Paul 03" é agora um campo e "16" é o segundo campo. Com o delimitador '-', os alinhamentos verticais para os novos campos são ruins. Dois campos foram devolvidos, separados por '-'. '-' foi re-exibido.

A primeira e a quinta linhas que não têm delimitadores podem ser removidas com a opção -s. Lembre -se, linhas neste tópico são linhas.

A opção -s

O resultado acima não deve ter a primeira e a quinta linhas. A opção -s elimina linhas que não têm o delimitador. Com a opção -s, o comando acima se torna:

$ corte -s -d ' -' -f 1,2 funcionário.TXT

Um resultado mais satisfatório é obtido, ou seja:

John 11-05
Paulo 03-16
Peter 07-20
Susan 04-17

As duas novas colunas de campo re-partidas agora são vistas claramente.

A opção de comprimido

Isso copia os complementos para as colunas dos bytes, personagens ou campos escolhidos. O comando a seguir copia os dois últimos campos (da TAB Delimiter), em vez dos quatro primeiros:

$ CUT -COMPLEMENTO -F -4 FUNCIONAL.TXT
Data empregada Tempo empregado
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Conclusão

O comando de corte copia colunas de bytes ou de caracteres ou de sub-ruptura, fora de linhas de texto em um arquivo. Por padrão, ele envia as partes selecionadas das linhas para a saída padrão. Um delimitado de sub-string é um campo. Por padrão, o delimitador para sub-strings é o caractere da guia. No entanto, isso pode ser alterado. Um delimitador como '-' ou ':' ou ", etc. pode ser usado. Quando isso é feito, a linha é re-partida em diferentes sub-strings. A opção -s pode ser usada para eliminar da saída, linhas que não têm o delimitador.