Você tem um arquivo CSV, a saída de um comando ou um arquivo de log e só quer recuperar uma única coluna sem escrever um script completo? É exatamente para isso que [a ferramenta] serve. corteO processo de encomenda é simples, rápido e muito conveniente quando o formato inicial está limpo.
Neste guia, mostrarei como usar corte Com um delimitador, como você extrai caracteres específicos e, principalmente, em quais casos é melhor usar um delimitador? estranho Ou sed. corte Corta muito bem, mas não detecta arquivos malformados.
Qual é a finalidade do comando “cut” no Linux?
corte Ele lê cada linha e mantém apenas a parte solicitada. Você pode trabalhar caractere por caractere com -c, por byte com -bou por campos com -fNa prática, é principalmente -f com -d que é o mais útil.
cortar -d ':' -f 1 /etc/passwd
Aqui, -d ':' Indica que os campos estão separados por dois pontos. -f 1 pede o primeiro campo. /etc/passwdEsta janela exibe os nomes das contas locais.
Antes de usar corte Ao examinar um arquivo de sistema, comece exibindo algumas linhas. Isso evita que você tire conclusões precipitadas com base em um formato que não foi verificado.
head -5 /etc/passwd
Extraindo uma coluna com um delimitador
A sintaxe mais útil é a seguinte:
cortar -d 'DELIMITER' -f número do arquivo
Exemplo com um arquivo CSV muito simples:
usuários de gato.csv
Nome, e-mail, cargo
alice,[email protected],admin
marc,[email protected],lendo
Para extrair a segunda coluna:
cortar -d ',' -f 2 usuários.csv
Resultado esperado:
e-mail
[email protected]
[email protected]
Você também pode solicitar vários campos:
cortar -d ',' -f 1,3 usuários.csv
Ou uma praia:
cortar -d ',' -f 1-2 usuários.csv
Atenção: corte A contagem dos campos começa em 1, não em 0. É uma bobagem, mas é uma fonte clássica de erros ao migrar de uma linguagem de script para um comando de shell.
Trabalhando em uma saída de pedido
corte A coisa fica interessante com um pipe. Exemplo simples: recuperar apenas nomes de usuário locais de /etc/passwd.
cat /etc/passwd | cut -d ':' -f 1
Podemos escrever de forma mais concisa sem gato :
cortar -d ':' -f 1 /etc/passwd
Outro exemplo: extrair pontos de montagem de uma saída limpa de df.
df -h --output=source,pcent,target | tail -n +2
Neste caso específico, corte não é a melhor opção, pois as colunas estão alinhadas com espaçamento variável. Para esse tipo de saída, estranho costuma ser mais confiável:
df -h --output=source,pcent,target | awk 'NR>1 {print $2, $3}'
Este é o limite a ser lembrado: corte Funciona muito bem quando o separador é nítido e estável. Se o espaçamento variar dependendo do comprimento da coluna, não force.
Extraia caracteres específicos
Com -cVocê pode extrair as posições dos caracteres. Isso é útil para arquivos de largura fixa ou para verificar rapidamente um prefixo.
echo "prod-server-01" | cut -c 1-7
Resultado:
servidor
Algumas formas úteis:
cortar -c 1-5 arquivo.txt
cortar -c 8- arquivo.txt
cortar -c -10 arquivo.txt
O primeiro comando mantém os caracteres de 1 a 5. O segundo mantém o caractere 8 até o final. O terceiro mantém o caractere 10 do início até o caractere 10.
Os problemas com arquivos CSV e espaços
O erro mais comum envolve arquivos CSV verdadeiros. Se uma coluna contiver uma vírgula entre aspas, corte Não entende a lógica do CSV. Continua a dividir o arquivo em cada vírgula.
nome, comentário
Alice, "administradora, acesso total"
Neste exemplo, cortar -d ',' -f 2 Isso não produzirá um resultado confiável. Para um CSV válido, utilize uma ferramenta capaz de ler o formato, como Python, Miller, csvkit ou um processador adaptado ao seu ambiente.
Outra armadilha: o separador padrão de corte Para campos, o delimitador é uma tabulação, não um espaço. Se você estiver testando um comando com espaços, especifique o delimitador explicitamente.
echo "web01 prod ativo" | cut -d ' ' -f 2
Este comando retorna produçãoMas se a linha contiver vários espaços consecutivos, corte Também contabiliza campos vazios. Novamente, estranho muitas vezes fica mais limpo.
Um exemplo útil usando registros
Em um servidor, você pode combinar jornalctl, grep E corte Isolar uma parte de uma linha. Um exemplo deliberadamente simples: recuperar as primeiras colunas de uma exportação.
journalctl -u ssh -n 20 --no-pager | cut -d ' ' -f 1-3
Esta não é uma análise completa de logs, mas pode ser suficiente para verificar rapidamente os horários ou preparar um breve relatório para copiar em um ticket. Para um diagnóstico mais abrangente, detalhei o uso de journalctl na última inicialização do Linux.
Quando devo trocar o cut pelo awk?
Usar corte Quando o arquivo é simples: separador único, colunas estáveis, necessidade de velocidade. Mude para estranho Quando você precisa filtrar, calcular, ignorar linhas, lidar com espaços variáveis ou aplicar uma condição.
# corte é suficiente
cortar -d ':' -f 1 /etc/passwd
#awk se torna mais útil
awk -F ':' '$3 >= 1000 {print $1}' /etc/passwd
A documentação de cortar (1) Detalha as opções disponíveis. Para o uso diário, lembre-se acima de tudo. -d, -f E -c.
Minha regra simples: se você conseguir explicar a falha em uma frase, corte Provavelmente é suficiente. Se você começar a adicionar exceções mentalmente, leve isso ao extremo. estranho ou um roteiro de verdade. Você perderá menos tempo.