Classificar IP's associados a uma string em um arquivo txt no linux

0

Alguém poderia me ajudar a classificar numericamente os IPs de um arquivo .txt contendo uma string com um IP associado a ele?

Conteúdo em txt:

string_A=10.a.y.155
string_B=10.a.y.212
string_C=10.a.y.104
string_D=10.a.y.10
string_E=10.a.y.198
string_U=10.b.x.155
string_V=10.b.x.212
string_X=10.b.x.104
string_Y=10.b.x.10
string_Z=10.b.x.198

A saída que eu quero:

10.a.x._ series in sorted way.

string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212

Não tenho certeza se posso postar os valores originais devido à política de dados de nossa empresa. Então, esses valores fictícios em vez disso.

    
por Raj 07.09.2017 / 09:43

3 respostas

1

Usando -V ("classificação de versão"), implementado pela maioria sort :

$ sort -t '=' -k2 -V file
string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212
string_Y=10.b.x.10
string_X=10.b.x.104
string_U=10.b.x.155
string_Z=10.b.x.198
string_V=10.b.x.212

Se a=15 e b=140 :

$ sort -t '=' -k2 -V file
string_D=10.15.y.10
string_C=10.15.y.104
string_A=10.15.y.155
string_E=10.15.y.198
string_B=10.15.y.212
string_Y=10.140.x.10
string_X=10.140.x.104
string_U=10.140.x.155
string_Z=10.140.x.198
string_V=10.140.x.212

O -k2 com -t '=' faz com que sort considere os dados após o = como a chave de classificação.

    
por 07.09.2017 / 10:08
1

Com o comando sort :

sort -t'=' -k2 file
  • -t'=' - = assinar como separador de campos

  • -k2 - classificação pelo segundo campo

A saída:

string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212
string_Y=10.b.x.10
string_X=10.b.x.104
string_U=10.b.x.155
string_Z=10.b.x.198
string_V=10.b.x.212
    
por 07.09.2017 / 09:51
0

Uso:

sort -t. -nk1,1 -nk2,2 -nk3,3 -nk4,4 file

-n - classificação numericamente

Você precisa classificar por cada um dos quatro campos .

    
por 07.09.2017 / 10:01