Linux – Dominando o comando cut

Mesclando um pouco do man do comando, podemos resumir que o cut, um dos comandos do pacote GNU core-utils combinando  os seus diversos parâmetros, conseguimos imprimir na saída padrão uma sessão ou parte de uma string de um arquivo.

Vamos criar um arquivo de texto simples (texto.txt) com algumas palavras/frases:

Vamos a alguns parâmetros/opções:

-b Seleciona somente o(s) byte(s) informado(s)
-c Seleciona somente o(s) caractere(s) informado(s)
-d Especifica o delimitador a ser usado, padrão é TAB
-f Seleciona somente o(s) campo(s) informado(s), also print any line that contains no delimiter character, unless the -s option is specified
–complement Complementa baseado em bytes, caracteres ou campos especificados
-s Não imprimir linhas que não possuem o delimitador especificado
–output-delimiter Usa uma STRING como delimitadora para a nova saida

Vamos a alguns exemplos, começando com o parâmetro ‘-c‘ onde podemos fornecer 1 caractere, um intervalo ou sequencia de caracteres a serem impressos em cada linha.

Agora somente o caractere 4 de cada linha.

Pegando apenas do caractere 1 ao 5.

Agora apenas do 3 ao 10.

Pegando caracteres em intervalos diferentes.

Um intervalo com mais caracteres:

Ignorando apenas o primeiro caractere e imprimindo o resto da linha.

Imprimindo até o caractere 2, depois pulando até o 5 e imprimindo até o final da linha.

Baseado no nosso texto exemplo, vamos usar o ‘.‘ como delimitador para as linhas e junto utilizar o parâmetro ‘-f‘ para dizer ao comando qual campo queremos.

Baseado no delimitador ‘.‘ o primeiro campo é o antes dele o restante é ignorado, mas as linhas que não possuem ponto também foram impressas, vamos ver como ignorar as que não possuem delimitador.

Adicionamos o parâmetro ‘-s’ e resolvemos esta problema, vamos agora imprimir o segundo campo.

E também podemos imprimir com intervalos no ‘-f‘.

As vezes você quer ignorar um campo e imprimir o restante, para isso pode usar o ‘–complement‘.

O ‘–complement‘ é valido para ‘-c‘ também.

Agora um exemplo de usando delimitador vamos trocar a string de saída por outro delimitador.

No caso, antes nosso delimitador era ‘.‘ agora trocamos por ‘$‘ usando o parâmetro ‘–output-delimiter‘.

Com todas as opções acima, e os exemplos aplicados podemos facilmente manipular e criar vários scripts uteis para trocar delimitadores, cortar ou ignorar partes de strings.

Extra com cut

Você pode ainda combinar o cut com outros comandos, por exemplo o grep. Vamos filtrar o /etc/passwd pelo usuário cleiton e depois aplicar o comando.

Então após o grep, fizemos algumas manipulações, pegando apenas UID e GID, depois pulando apenas o nome completo do usuário e por fim, substituindo “:” por “@“.

Espero que tenham gostado.

Até a próxima!

 

Referências

$ info cut

$ man 8 cut

Share Button

CC BY-NC-SA 4.0 Linux – Dominando o comando cut by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.