Os sistemas operacionais baseados em Linux oferecem muitos utilitários de processamento de texto de linha de comando que você pode usar em sua rotina diária. O comando cut é um desses utilitários de manipulação de texto que usa delimitadores, bytes, campos e colunas para buscar uma string necessária de um banco de dados de arquivo simples ou de uma linha.
Como um banco de dados flat-file não possui uma relação estrutural e os registros são separados com a ajuda de delimitadores, cut é uma ferramenta ideal para extrair caracteres ou bytes de informação. Este artigo discute o comando de corte em detalhes e demonstra alguns exemplos práticos com diferentes opções de filtro para você começar a usar a ferramenta.
Visão geral do comando de corte
cut usa a seguinte sintaxe básica:
cortar
Você também pode canalizá-lo com outros comandos da seguinte forma:
echo “string_of_characters” | cortar
Observe que a ausência de qualquer opção gera um erro. Aqui estão alguns sinalizadores que você pode usar com cut para invocar suas várias funções:
Opção | Descrição |
---|---|
-b | Cortes por posição de byte |
-c | Cortes por posição do personagem |
-d | Extrai a string usando o delimitador especificado com a opção de campo (-f) |
-f | Extrações por um campo especificado |
-s | Extrações apenas para delimitadores |
--complemento | Imprima a saída, exceto para o campo que você especificou |
--delimitador de saída | Substitua o delimitador existente pelo que você especificou |
Aqui estão alguns exemplos do comando de corte que o ajudarão a entender melhor a ferramenta e suas funções.
1. Extrair caracteres específicos de uma string
Use o -b opção para buscar strings de caracteres por sua contagem de bytes, como segue:
echo "Olá Mundo" | corte -b 1,2,3,5,8,9
Saída:
Heloor
Você também pode especificar um caminho de arquivo em vez de uma string:
cut -b 1,2,3,4,5 nomedoarquivo.txt
Ou você pode extrair caracteres de acordo com sua posição no texto. Use o -c opção seguida pela sequência/ordem de caracteres que você precisa buscar da seguinte forma:
echo "Olá Mundo" | corte -c 1,2,3,5,6,8,10,11
Saída:
Olá velho
Da mesma forma, para buscar campos ou colunas de um banco de dados de arquivo simples, use o comando cut com o -f opção de bandeira:
cut -f 3 banco de dados.txt
2. Faixa de corte de bytes ou caracteres
Você também pode usar o -b flag com o comando cut para extrair e imprimir vários intervalos de bytes da seguinte forma:
cut -b 1-7,16-23 database.txt
Você pode definir o intervalo para buscar caracteres usando o -c sinalizar da seguinte forma:
cut -c 1-7,16-23 database.txt
3. Extrair texto das posições inicial ou final
Use o -cn- opção para extrair texto do enésimo caractere até o final da linha, onde n é o índice de um caractere na string.
Por exemplo, para extrair a string começando do sexto caractere até o final da linha:
cut -c6- database.txt
Ou use o seguinte comando para buscar do início até o último m caracteres do arquivo:
cut -c-8 database.txt
4. Cortar vários campos de um arquivo
Você também pode imprimir vários campos de um arquivo usando o -f bandeira.
cut -f 1,2 database.txt
Saída:
NOME IDADE
João 20
Lisa 24
Jack 18
Bruce 23
Nancy 19
5. Extrair texto usando delimitadores
Você pode usar o -d sinalizador para especificar o delimitador com o -f opção. O delimitador especifica o caractere usado para separar campos em um arquivo de texto.
Por exemplo, para extrair a primeira coluna do /etc/passwd arquivo, use dois pontos (:) como delimitador:
cut -d ':' -f 1 /etc/passwd
Da mesma forma, o valor do delimitador no fluxo de texto fornecido é um único espaço:
echo "O 1% do 1%" | corte -d ' ' -f 2,3
Saída:
1% de
6. Alterar delimitador de saída para exibição
O --delimitador de saída sinalizador adiciona flexibilidade à saída do comando de corte. Por exemplo, você pode usar o sinalizador para exibir a saída em uma linha separada usando o $'\n' (nova linha), como segue:
grep alice /etc/passwd | cut -d ':' -f 1,5,7 --output-delimiter=$'\n'
Saída:
alice
Alice
/bin/sh
Além disso, você também pode substituir um delimitador de um arquivo de entrada pelo delimitador de sua escolha na saída usando o --delimitador de saída bandeira:
grep root /etc/passwd | cut -d ':' -f 1,6,7 --output-delimiter=@
Saída:
root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin
7. Cortar campos apenas quando uma linha contém o delimitador
Use o -s sinalizador para extrair campos somente quando as linhas contiverem um delimitador. Por exemplo, o comando a seguir não buscará o campo -f 1 a menos que tenha um delimitador de espaço:
echo "OláMundo" | corte -d " " -f 1 -s
Pelo contrário, o comando abaixo mencionado gerará uma saída, pois a string contém o delimitador especificado:
echo "Olá Mundo" | corte -d " " -f 1 -s
Saída:
Olá
Da mesma forma, você também pode usar qualquer outro caractere como delimitador:
echo "Olá: Mundo" | corte -d ":" -f 2 -s
Saída:
Mundo
8. Complemente a saída do comando
O utilitário de corte também permite imprimir todos os campos, exceto o campo especificado. Use o --complemento opção da seguinte forma para buscar todos os detalhes da conta do usuário root, exceto a quinta coluna:
grep "raiz" /etc/passwd | cut -d ':' --complemento -s -f 5
Saída:
root: x: 0:0:/root:/bin/bash
Da mesma forma, no exemplo abaixo, o -f 1 parâmetro deve exibir Olá texto, no entanto, devido ao --complemento opção, imprime apenas o resto.
echo "Olá ao mundo inteiro" | corte -d " " -f 1 --complemento
Saída:
ao mundo inteiro
A melhor parte é que você pode combinar o comando cut com a saída padrão de outros comandos Linux/Unix.
sed é uma dessas ferramentas de edição de texto que você pode usar para excluir, inserir e substituir seu texto. Você pode facilmente canalizar sua saída para o comando de corte.
No exemplo abaixo, o comando grep a saída é canalizada para o utilitário sed que substitui dois pontos (:) por um hífen (-) e, em seguida, cut exibe os campos 1, 6 e 7 da seguinte forma:
grep alice /etc/passwd | sed 's/:/-/g' | corte -d ' ' -f 1,5,7
Saída:
alice-x-1005-1008-Alice-/home/novo/alice-/bin/sh
Trabalhando com texto no Linux usando cut
O comando cut é um utilitário de linha de comando flexível e eficiente que você pode usar em vários casos de uso de manipulação de texto. Ele utiliza operações para filtrar texto de arquivos ou dados de entrada padrão. O utilitário também tem a vantagem de permitir que os usuários limitem o texto que desejam exibir e adicionem delimitadores de sua própria escolha.
No entanto, este comando também tem algumas limitações. Você não pode usar expressões regulares para especificar o delimitador ou usar várias opções de comando de corte simultâneo. Este artigo cobriu exemplos práticos do nível básico ao avançado deste utilitário para ajudar os iniciantes a entender claramente os comandos de manipulação de texto no Linux.
Quer melhorar seu jogo Linux e aprender mais sobre manipulação de texto? Aqui estão as cinco principais ferramentas de linha de comando do Linux para começar sua jornada.
Leia a seguir
- Linux
- Comandos Linux
- Linux elementar
- Shell Bash Linux
Rumaisa é redatora freelancer na MUO. Ela já desempenhou muitos cargos, de matemática a entusiasta de segurança da informação, e agora está trabalhando como analista de SOC. Seus interesses incluem ler e escrever sobre novas tecnologias, distribuições Linux e qualquer coisa relacionada à Segurança da Informação.
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar