Re: commande sort ou autre

Top Page

Reply to this message
Author: nt.guilde
Date:  
To: anne.guilde@free.fr
CC: guilde
Subject: Re: commande sort ou autre
Quoting anne.guilde@???, Mon 20 Jan 2020, 05:29 +0100 CET :
> la ligne de commande, c'était pour éviter un éditeur.
>
> Ma ligne 'sort' marche bien.
> Le souci c'est que la colonne k37 peut être vide et j'aimerais que ces
> lignes soit en dernier, et avec les autres lignes que k37 soit en ordre
> croissant.


$ vi contacts-2020-01-19.csv
:2,$s/;$/;zzz/
:2,$!sort -t \; -k 37,37 -k 3,3
:2,$s/;zzz$/;/
:wq

> la ligne de commande, c'était pour éviter un éditeur.


$ { sed 1q file.csv
    sed '1d; /;$/d' file.csv | sort -t \; -k 37,37 -k 1,1
    sed '1d; /;$/!d' file.csv | sort -t \; -k 1,1
  }


$ 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
    }
  ' file.csv


L'éditeur, c'est peut-être plus simple ; ou calc.
450 contacts, c'est peut-être un peu trop ; fais attention à la CNIL.

-Nicolas T.