Existe uma maneira de classificar a saída do grep de um arquivo csv?

2

Eu tenho um arquivo csv no qual preciso pesquisar. O problema é que há muitos dados nele e a procura pela saída é meio problemática. Parece que isso

col1,col2,...col23
1,123,...,12.01
43,1123,...,142.455
12,63,...,723.1122
...

Então, depois de aplicar um pouco de grep padrão, eu gostaria de ter a saída classificada pelo col23 em ordem decrescente. col23 contém números de ponto flutuante. Existe uma maneira de fazer isso?

Quero dizer algo assim:

grep "pattern" the_file.csv | ...sort it
    
por St.Antario 23.12.2016 / 08:24

1 resposta

3

Uso:

grep "pattern" the_file.csv | sort -t, -nk 23 | column -ts,

ou

grep "pattern" the_file.csv | sed 's/,/ /g' | sort -nk 23 | column -t

com notação exponencial use sort -g em vez de sort -n

Explicação:

  • sort -k 23 : classificar na coluna número 23
  • sort -n : compare de acordo com o valor numérico da string
  • sort -g : compare de acordo com o valor numérico geral
  • sort -t, : classificar com delimitador ,
  • column -t : crie colunas com base em espaços em branco ou usando o delimitador ( -s<delimiter> )
  • sed 's/,/ /g' : substitua ( s ) todas as ocorrências de , com um espaço ' ' em todas as linhas ( g )
por 23.12.2016 / 08:37

Tags