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.