Admin Linux - comando sort
sorttem várias otimizações para classificação com base em tipos de dados. Este comando grava a concatenação classificada de todos os arquivos na saída padrão. No entanto, esteja cansado, operações de classificação complexas em arquivos grandes de alguns GigaBytes podem impedir o desempenho do sistema.
Ao executar um servidor de produção com disponibilidade limitada de CPU e / ou memória, é recomendável descarregar esses arquivos maiores em uma estação de trabalho para operações de classificação durante o horário comercial de pico.
Interruptor | Açao |
---|---|
-b | Ignorar as linhas em branco iniciais |
-d | Ordem do dicionário, considere apenas espaços em branco e caracteres alfanuméricos |
-f | Ignora maiúsculas e minúsculas, dobrando os caracteres inferiores e superiores |
-g | Classificação numérica geral |
-M | Tipo de mês |
-h | Classificação numérica legível por humanos 1 KB, 1 MB, 1 GB |
-R | Classificação aleatória |
-m | Mesclar arquivos já classificados |
Sinta-se à vontade para copiar o texto tabular abaixo e acompanhar nossos exemplos de classificação. Certifique-se de que cada coluna seja separada por um caractere de tabulação.
primeiro nome | último nome | escritório |
---|---|---|
Ted | Daniel | 101 |
Jenny | Cólon | 608 |
Dana | Maxwell | 602 |
Mariana | Pouco | 903 |
Bobbie | Chapman | 403 |
Nicolas | Singleton | 203 |
Dale | Barton | 901 |
Aaron | Dennis | 305 |
Santos | Andrews | 504 |
Jacqueline | Neal | 102 |
Billy | Crawford | 301 |
Rosa | Verões | 405 |
Kellie | Curtis | 903 |
Matt | Davis | 305 |
Gina | Carr | 902 |
Francisco | Gilbert | 101 |
Sidney | Mack | 901 |
Heidi | Simmons | 204 |
Cristina | Torres | 206 |
Sonya | Tecelão | 403 |
Donald | Evans | 403 |
Gwendolyn | Câmaras | 108 |
Antonia | Lucas | 901 |
Blanche | Hayes | 603 |
Carrie | Todd | 201 |
Terence | Anderson | 501 |
Joan | Parsons | 102 |
Rosa | Fisher | 304 |
Malcolm | Matthews | 702 |
Usando sort em sua forma mais básica, padrão -
[[email protected] centos]# sort ./Documents/names.txt
Aaron Dennis 305
Antonia Lucas 901
Billy Crawford 301
Blanche Hayes 603
Bobbie Chapman 403
Carrie Todd 201
Cristina Torres 206
Dale Barton 901
Dana Maxwell 602
Donald Evans 403
Francisco Gilbert 101
Gina Carr 902
Gwendolyn Chambers 108
Heidi Simmons 204
Jacqueline Neal 102
Jenny Colon 608
Joan Parsons 102
Kellie Curtis 903
Malcolm Matthews 702
Marian Little 903
Matt Davis 305
Nicolas Singleton 203
Rosa Summers 405
Rose Fisher 304
Santos Andrews 504
Sidney Mack 901
Sonya Weaver 403
Ted Daniel 101
Terence Anderson 501
[[email protected] centos]#
Às vezes, queremos classificar os arquivos em outra coluna, diferente da primeira coluna. Uma classificação pode ser aplicada a outras colunas com o-t e -k comuta.
-t : define a file delimiter
-k : key count to sort by (think of this as a column specified from the delimiter.
-n : sort in numeric order
Note- Em alguns exemplos, usamos cat canalizado para grep. Isso era para demonstrar os conceitos de comandos de tubulação. A saída de cat para grep pode aumentar a carga do sistema centenas de vezes com arquivos grandes, ao adicionar uma classificação complexa. Isso fará com que os administradores Linux veteranos se encolham.
Agora que temos uma boa ideia de como funciona a tubulação, essa prática inadequada será evitada nos capítulos a seguir. A chave para manter os recursos do sistema baixos com comandos como sort, é aprender a usá-los com eficiência.
[[email protected] centos]# sort -t ' ' -k 3n ./Documents/names.txt
Ted Daniel 101
Francisco Gilbert 101
Jacqueline Neal 102
Joan Parsons 102
Gwendolyn Chambers 108
Carrie Todd 201
Nicolas Singleton 203
Heidi Simmons 204
Cristina Torres 206
Billy Crawford 301
Rose Fisher 304
Aaron Dennis 305
Matt Davis 305
Bobbie Chapman 403
Donald Evans 403
Sonya Weaver 403
Rosa Summers 405
Terence Anderson 501
Santos Andrews 504
Dana Maxwell 602
Blanche Hayes 603
Jenny Colon 608
Malcolm Matthews 702
Antonia Lucas 901
Dale Barton 901
Sidney Mack 901
Gina Carr 902
Kellie Curtis 903
Marian Little 903
[[email protected] centos]#
Agora temos nossa lista classificada por número de escritório. O leitor astuto notará algo fora do comum após o-tinterruptor; aspas simples separadas pelo que parecem ser alguns espaços. Na verdade, este era um caractere Tab literal enviado ao shell. Uma guia literal pode ser enviada ao shell BASH usando a combinação de teclas de:control+Tab+v.
A maioria dos shells interpretará a tecla Tab como um comando. Por exemplo, preenchimento automático no BASH. O shell precisa de uma sequência de escape para reconhecer um caractere Tab literal. Esse é um dos motivos pelos quais as guias não são a melhor escolha para delimitadores no Linux. De modo geral, é melhor evitar espaços e tabulações, pois eles podem causar problemas durante a criação de scripts de um shell.
Vamos corrigir nosso arquivo names.txt.
[[email protected] centos]# sed -i 's/\t/:/g' ./Documents/names.txt &&
cat ./Documents/names.txt
Ted:Daniel:101
Jenny:Colon:608
Dana:Maxwell:602
Marian:Little:903
Bobbie:Chapman:403
Nicolas:Singleton:203
Dale:Barton:901
Aaron:Dennis:305
Santos:Andrews:504
Jacqueline:Neal:102
Billy:Crawford:301
Rosa:Summers:405
Kellie:Curtis:903:
Matt:Davis:305
Gina:Carr:902
Francisco:Gilbert:101
Sidney:Mack:901
Heidi:Simmons:204
Cristina:Torres:206
Sonya:Weaver:403
Donald:Evans:403
Gwendolyn:Chambers:108
Antonia:Lucas:901
Blanche:Hayes:603
Carrie:Todd:201
Terence:Anderson:501
Joan:Parsons:102
Rose:Fisher:304
Malcolm: Matthews:702
[[email protected] centos]#
Agora será muito mais fácil trabalhar com o arquivo de texto. Se alguém exigir que ele seja retornado ao delimitado por tabulação para outro aplicativo (isso é comum), podemos realizar essa tarefa facilmente como -
sed -i 's/:/\t/g' ./Documents/names.txt
Aplicativos comuns de usuário final funcionarão bem com Tabs como um delimitador (um contador não quer ver dois pontos separando colunas de dados, enquanto trabalha em planilhas). Portanto, aprender a transformar personagens para frente e para trás é uma boa prática; surge frequentemente.
Note- O Office usa processadores de texto e planilhas com Interface Gráfica de Usuário, rodando em Windows. Conseqüentemente, é comum que os administradores Linux sejam bons em concluir ações de transformação, acomodando usuários finais de escritório (na maioria das vezes, nosso chefe será um usuário final).
Introduzido foi um comando chamado sed. sed é um editor de fluxo e pode ser usado como um editor de texto não interativo para manipular fluxos de texto e arquivos. Aprenderemos mais sobre o sed mais tarde. No entanto, lembre-se por enquanto, usando sed, evitamos a necessidade de canalizar vários comandos de filtro ao alterar nosso arquivo de texto. Assim, fazendo o uso mais eficiente das ferramentas disponíveis.
Também introduzimos um operador de shell Bash: && . && executará o segundo comando apenas se o primeiro comando for concluído com um status de sucesso de "0".
[[email protected] centos]# ls /noDir && echo "You cannot see me"
ls: cannot access /noDir: No such file or directory
[[email protected] centos]# ls /noDir ; echo "You cannot see me"
ls: cannot access /noDir: No such file or directory
You cannot see me
[[email protected] centos]# ls /noDir ; echo "You cannot see me"
No código acima, observe a diferença entre && e;? O primeiro só executará o segundo comando quando o primeiro for concluído com sucesso, enquanto; simplesmente acorrenta os comandos. Mais sobre isso quando chegarmos aos comandos do shell de script.