- Gerar link
- Outros aplicativos
Postagem em destaque
- Gerar link
- Outros aplicativos
Sobre
Remover seções de cada linha de arquivos para saída padrão.
Descrição
O comando cut é utilizado para remover seções em cada linha de um arquivo - “cortar” colunas de dados separadas por um caractere delimitador comum, e imprimi-las na saída padrão. Se o delimitador for omitido, assume espaço como delimitador padrão. O arquivo original não é modificado.
Para mais detalhes, consulte o manual: cut(1)
Para mais detalhes, consulte o manual: cut(1)
Uso
cut [OPÇÃO]... [ARQUIVO]...
Exemplos:
Para nosso exemplo, criei um arquivo chamado dados.txt com o seguinte conteúdo.
um dois três quatro cinco seis
primeiro segundo terceiro quarto quinto sexto
1 2 3 4 5 6
primeiro segundo terceiro quarto quinto sexto
1 2 3 4 5 6
1. Selecionando um determinado campo.
1.1 Selecionando apenas o 2º campo de cada linha. Para isso precisamos informar o delimitador que iremos tratar, utilizando o parâmetro -d.
O campo especificado pode estar junto ao parâmetro -f. Dessa forma: -f2, que não haveria problemas. O motivo de menciona-lo separado é apenas para facilitar a leitura da sintaxe.$ cut -d' ' -f 2 dados.txt
dois
segundo
2
1.2 Selecionando o 4º campo
$ cut -d' ' -f 4 dados.txt
quatro
quarto
4
2. Selecionando múltiplos campos.
Além de especificar somente uma linha, também podemos selecionar múltiplos campos, separando-os por uma (,) vírgula.2.1 Selecionando os campos 1 e 3
$ cut -d' ' -f 1,3 dados.txt
um três
primeiro terceiro
1 3
2.2 Selecionado os campos 1,4 e 6.
$ cut -d' ' -f 1,4,6 dados.txt
um quatro seis
primeiro quarto sexto
1 4 6
3. Selecionando um intervalo de campos.
Podemos especificar um intervalo onde somente os campos dentro desse intervalo serão capturados, enquanto os demais ignorados.3.1 Selecionado o 3ª campo e todos os campos em diante, ignorando os anteriores.
É útil quando lidamos com um número desconhecido de campos ou quando precisamos especificar vários campos em uma única linha de comando.$ cut -d' ' -f 3- dados.txt
três quatro cinco seis
terceiro quarto quinto sexto
3 4 5 6
Podemos especificar o campo inicial e final de nosso intervalo. Utilizando o (-) hífen entre eles.
3.2 Selecionado somente do 2º até o 4º campo.
$ cut -d' ' -f 2-4 dados.txt
dois três quatro
segundo terceiro quarto
2 3 4
Também podemos especificar somente o intervalo final inserindo o caractere (-) hífen antes do número do campo. Isso faz com que todos os campos a partir da posição 1 sejam selecionados até a posição final especificada.
3.3 Selecionando os primeiros 4 campos.
$ cut -d' ' -f -4 dados.txt
um dois três quatro
primeiro segundo terceiro quarto
1 2 3 4
4. Combinando opções de seleção.
Além da utilização convencional, é possível combinarmos as opções em uma única linha de comando para seleção. Assim conseguimos capturar vários campos aplicando critérios distintos.4,1 Selecionando o 1º e do 3º até o 5º campo.
$ cut -d' ' -f 1,3-5 dados.txt
um três quatro cinco
primeiro terceiro quarto quinto
1 3 4 5
4.2 Selecionando os dois primeiros campos e todos a partir do 5º.
$ cut -d' ' -f -2,5- dados.txt
um dois cinco seis
primeiro segundo quinto sexto
1 2 5 6
5. Definindo o delimitador de saída.
O delimitador de saída é uma expressão que definimos para substituir o delimitador de entrada na saída padrão do comando. Após o processamento dos dados o comando imprime os campos selecionados separando-os pelo delimitador especificado.5.1 Imprime os primeiros 4 campos, definindo o (-) hífen como delimitador de saída.
Note que o delimitador de entrad ( ) espaço, foi substituido pelo (-) hífen; retornando todos os campos separados pelo novo delimitador.$ cut -d' ' --output-delimiter='-' -f -4 dados.txt
um-dois-três-quatro
primeiro-segundo-terceiro-quarto
1-2-3-4
5.2 Definindo uma expressão como delimitador.
O delimitador de saída suporta expressões, ao contrário do delimitador de entrada que só aceita caracteres únicos.$ cat dados.txt | cut -d' ' --output-delimiter=' <-CAMPO-> ' -f -4
um <-CAMPO-> dois <-CAMPO-> três <-CAMPO-> quatro
primeiro <-CAMPO-> segundo <-CAMPO-> terceiro <-CAMPO-> quarto
1 <-CAMPO-> 2 <-CAMPO-> 3 <-CAMPO-> 4
6. Selecionando cadeia de caracteres.
Utilizando o parâmetro '-c' é possível capturar uma cadeia de caracteres dentro uma expressão.6.1 Listando os primeiros 4 caracteres.
O mesmo conceito de seleção de lista e intervalos se aplica a seleção de caracteres.$ cut -c -4 dados.txt
um d
prim
1 2
6.2 Listando todos os caracteres a partir do 8º caractere.
$ cut -c 8- dados.txt
tres quatro cinco seis
o segundo terceiro quarto quinto sexto
5 66.3 Listando o 1º, do 3º ao 5º e do 10º até 16º caractere.
$ cut -c 1,3-5,10-16 dados.txt
u dores qua
pimesegundo
12 3 6
7. Trabalhando com delimitadores.
Para este exemplo vou utilizar o arquivo /etc/passwd que contém informações sobre cada usuário do sistema, um usuário por linha e cada campo de informação é delimitado por dois pontos (":"). Considere a linha que contém informações sobre o usuário root.root:x:0:0:root:/root:/bin/bash
Esses campos contêm as seguintes informações, na seguinte ordem, separadas por um caractere de dois pontos:
- Nome de usuário
- Senha
- Número de identificação do usuário (UID)
- Número de identificação do grupo (GID)
- Campo de comentário
- Diretorio home
- Linha de comando
7.1 Capturando somente o nome do usuário que está no primeiro campo.
$ cut -d':' -f1 /etc/passwd
root
daemon
bin
sys
sync
games
man7.2 Listando nome do usuário e o interpretador de comandos.
$ cut -d':' -f1,7 /etc/passwd
root:/bin/bash
daemon:/usr/sbin/nologin
bin:/usr/sbin/nologin
sys:/usr/sbin/nologin
sync:/bin/sync
games:/usr/sbin/nologin
man:/usr/sbin/nologin
7.3 Listando nome, id e home do usuário. Definindo o caractere de tabulação '\t' como delimitador de saída.
$ cut -d':' -f1,3,6 --output-delimiter=$'\t' /etc/passwd
root 0 /root
daemon 1 /usr/sbin
bin 2 /bin
sys 3 /dev
sync 4 /bin
games 5 /usr/games
man 6 /var/cache/man
Comentários
Postar um comentário