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.