Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

corte

O corte programa é usado para extrair uma seção de texto de uma linha e enviar a seção extraída para a saída padrão. Ele pode aceitar vários argumentos de arquivo ou entrada da entrada padrão.

Especificar a seção da linha a ser extraída é um tanto estranho e é especificado com as seguintes opções:


Tabela 20-3: opções de seleção de corte


Descrição da Opção

Descrição da Opção

-c lista_char Extraia a parte da linha definida por lista_char. A lista pode consistir em um ou mais intervalos numéricos separados por vírgulas.


imagem

-f lista_campo Extraia um ou mais campos da linha conforme definido por

field_list. A lista pode conter um ou mais campos ou intervalos de campos separados por vírgulas.


imagem

-d delim_char Quando -f é especificado, use delim_char como o caractere de delimitação de campo. Por padrão, os campos devem ser separados por um único caractere de tabulação.


imagem

--complement Extrair toda a linha de texto, exceto para essas partes

especificado por -c e / ou -f.


imagem


Como podemos ver, o caminho corte extrai o texto é bastante inflexível. corte é melhor usado para extrair texto de arquivos produzidos por outros programas, em vez de texto digitado diretamente por humanos. Vamos dar uma olhada em nosso distribuições.txt arquivo para ver se está "limpo" o suficiente para ser um bom espécime para o nosso corte exemplos. Se usarmos gato com o -A opção, podemos ver se o arquivo atende aos nossos requisitos de campos separados por tabulação:



[me @ linuxbox ~] $ gato -A distros.txt

SUSE ^ I10.2 ^ I12 / 07/2006 $

Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$

Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$

Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$

[me @ linuxbox ~] $ gato -A distros.txt

SUSE ^ I10.2 ^ I12 / 07/2006 $

Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$

Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$

Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$


SUSE ^ I10.1 ^ I05 / 11/2006 $

Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$

SUSE ^ I10.1 ^ I05 / 11/2006 $

Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$


Isso parece bom. Sem espaços incorporados, apenas caracteres de tabulação únicos entre os campos. Uma vez que o arquivo usa tabulações em vez de espaços, usaremos o -f opção para extrair um campo:


[me @ linuxbox ~] $ cut -f 3 distribuições.txt

12/07/2006

11/25/2008

06/19/2008

04/24/2008

11/08/2007

10/04/2007

10/26/2006

05/31/2007

10/18/2007

04/19/2007

05/11/2006

10/24/2006

05/13/2008

06/01/2006

10/30/2008

03/20/2006

[me @ linuxbox ~] $ cut -f 3 distribuições.txt

12/07/2006

11/25/2008

06/19/2008

04/24/2008

11/08/2007

10/04/2007

10/26/2006

05/31/2007

10/18/2007

04/19/2007

05/11/2006

10/24/2006

05/13/2008

06/01/2006

10/30/2008

03/20/2006


Porque o nosso distros arquivo é delimitado por tabulação, é melhor usar corte para extrair campos em vez de caracteres. Isso ocorre porque, quando um arquivo é delimitado por tabulação, é improvável que cada linha contenha o mesmo número de caracteres, o que torna difícil ou impossível calcular as posições dos caracteres dentro da linha. Em nosso exemplo acima, no entanto, agora extraímos um campo que felizmente contém dados de comprimento idêntico, para que possamos mostrar como a extração de caracteres funciona extraindo o ano de cada linha:



[me @ linuxbox ~] $ cut -f 3 distribuições.txt | corte -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007

[me @ linuxbox ~] $ cut -f 3 distribuições.txt | corte -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007


2007

2007

2006

2006

2008

2006

2008

2006

2007

2007

2006

2006

2008

2006

2008

2006


imagem

Correndo corte pela segunda vez em nossa lista, podemos extrair as posições de caractere 7 a 10, que correspondem ao ano em nosso campo de data. o 7-10 a notação é um exemplo de um intervalo. o corte A página do manual contém uma descrição completa de como os intervalos podem ser especificados.


Expansão de guias

Nosso distribuições.txt arquivo é formatado de maneira ideal para extrair campos usando corte. Mas e se quiséssemos um arquivo que pudesse ser totalmente manipulado com corte por caracteres, em vez de campos? Isso exigiria que substituíssemos os caracteres de tabulação no arquivo pelo número correspondente de espaços. Felizmente, o pacote GNU Coreutils inclui uma ferramenta para isso. Nomeado expandir, este programa aceita um ou mais argumentos de arquivo ou entrada padrão e produz o texto modificado na saída padrão.

Se processarmos nosso distribuições.txt arquivo com expandir, podemos usar o corte -c para extrair qualquer intervalo de caracteres do arquivo. Por exemplo, poderíamos usar o seguinte comando para extrair o ano de lançamento de nossa lista, expandindo o arquivo e usando corte para extrair todos os caracteres da vigésima terceira posição até o final da linha:

[me @ linuxbox ~] $ expandir distros.txt | corte -c 23-

Coreutils também fornece o não expandido programa para substituir tabulações por espaços.


Ao trabalhar com campos, é possível especificar um delimitador de campo diferente em vez do caractere de tabulação. Aqui iremos extrair o primeiro campo do / Etc / passwd arquivo:


[me @ linuxbox ~] $ cut -d ':' -f 1 / etc / passwd | cabeça

daemon raiz

[me @ linuxbox ~] $ cut -d ':' -f 1 / etc / passwd | cabeça

daemon raiz


bin sys sync jogos man lp mail notícias

bin sys sync jogos man lp mail notícias


Com o -d opção, podemos especificar o caractere de dois pontos como o delimitador de campo.


Top OS Cloud Computing na OnWorks: