Re: commande sort ou autre

Top Page

Reply to this message
Author: anne.guilde@free.fr
Date:  
To: guilde
CC: guilde
Subject: Re: commande sort ou autre
Le 21/01/2020 à 11:22, guilde.nt@??? a écrit :
> Quoting anne.guilde@???, Tue 21 Jan 2020, 02:09 +0100 CET :
>> Le 20/01/2020 à 15:28, nt.guilde@??? a écrit :
>>> awk -F \; -v s37="sort -t ';' -k 37,37 -k 1,1" -v s1="sort -t ';' -k 1,1" '
>>>       NR==1 {print ; next}
>>>       $37 {print |& s37 ; next}
>>   (...)
>> Je viens de tester

>>


awk -F \; -v s37="sort -t ';' -k 37,37 -k 1,1" -v s1="sort -t ';' -k 1,1" '
     NR==1 {print ; next}
     $37 {print |& s37 ; next}
     !$37 {print |& s1 ; next}
     END {
       close(s37, "to")
       close(s1, "to")
       while ((s37 |& getline) > 0) print
       while ((s1 |& getline) > 0) print
     }
   ' ../csv/2020-01-11_20-59_test-semi-1.csv 

>../csv/2020-01-11_20-59_test-semi-1-1.csv


Cela trie !

J'aimerais comprendre ces lignes

     NR==1 {print ; next}
Cela écrit la première  ligne


     $37 {print |& s37 ; next}
Cela écrit les lignes selon le sort de si la colonne 37 a quelque chose


     !$37 {print |& s1 ; next}
Cela écrit les lignes selon le sort de si la colonne 37 est vide


Du coup, cela trie et écrit en premier les lignes dont la catégorie est
rempli et cela met les lignes dont la catégorie est vide en dernier en
les triant aussi.

pas mal cette idée si j'ai bien compris

je suis en train de pondre un script bach en mettant en paramètre le
fichier à traiter.
Je teste juste si un paramètre a été donné et si le paramètre est un
fichier csv.

Je crois que la version se ne sera pas testé

merci
Anne