Classificando o arquivo CSV pela primeira coluna, ignorando o cabeçalho

4

Como classificaria um arquivo CSV pela primeira coluna, em que a primeira coluna é uma cadeia em letras minúsculas, ignorando a linha de cabeçalho?

    
por normannen 15.02.2017 / 01:31

3 respostas

5

O comando de ordenação não tem uma opção para excluir o cabeçalho. Como resultado, você pode enganar esta operação usando:

sort <(tail -n+2 yourfile)

Esta sintaxe tail especial recebe seu arquivo da segunda linha até EOF.

Claro que os resultados da classificação também não incluem o cabeçalho.

Você pode isolar o cabeçalho com o comando head -n1 yourfile , que imprimirá apenas a primeira linha do seu arquivo = seu cabeçalho.

Combine-os para que você possa executar:

head -n1 yourfile && sort <(tail -n+2 youfile)
#or
head -n1 yourfile && tail -n+2 yourfile |sort
    
por 15.02.2017 / 01:52
5

Suponho que você queira manter o cabeçalho: redirecionar o conteúdo do arquivo para uma construção agrupada:

{
    # grab the header and print it untouched
    IFS= read -r header
    echo "$header"
    # now process the rest of the input
    sort
} < file.csv
    
por 15.02.2017 / 03:51
1

Usando csvkit :

$ csvsort -c 1 file.csv

ou apenas

$ csvsort file.csv

A diferença é que o primeiro comando usará apenas a primeira coluna, enquanto o segundo usará tudo (como sort ).

    
por 15.02.2017 / 09:16

Tags