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 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}
>      !$37 {print |& s1 ; next}
>      END {
>        close(s37, "to")
>        close(s1, "to")
>        while ((s37 |& getline) > 0) print
>        while ((s1 |& getline) > 0) print
>      }
>    ' file.csv


Je viens de tester

bash tri-csv1
---
#!/bin/bash

awk -F \; -v s37="sort -t ';' -k 37,37 -k 3,3 " -v s3="sort -t ';' -k 
3,3" '\
     NR==1 {print ; next} \
     $37 {print |& s37 ; next} \
     !$3 {print |& s3 ; next} \
     END { \
       close(s37, "to") \
       close(s3, "to") \
       while ((s37 |& getline) > 0) print \
       while ((s3 |& getline) > 0) print \
     } \
   ' teledir-c59_2.csv
---


$ ./tri-csv1
awk: ligne de commande:8:       while ((s37 |& getline) > 0) print \
awk: ligne de commande:8:       ^ syntax error
awk: ligne de commande:9:       while ((s3 |& getline) > 0) print \
awk: ligne de commande:9:       ^ syntax error
awk: ligne de commande:9:       while ((s3 |& getline) > 0) print \
awk: ligne de commande:9:                                   ^ syntax error


y-a une erreur donc pas de résultat


-F \;  :  séparateur de champ
-V s37="sort -t ';' -k 37,37 -k 3,3 "   :    L'argument -v définit une 
variable (var dans l'exemple) qui sera utilisée par la suite dans le 
programme.
-v s1="sort -t ';' -k 3,3" '
- NR==1  : La syntaxe est la suivante critère1,critère2 {instructions}. 
Les instructions sont exécutées pour toute les lignes entre la ligne 
répondant au critère1 et celle au critère2. L'action est exécutée pour 
les lignes comprises entre la ligne 2 et 6.
awk 'BEGIN NR==2;NR==6 { print "ligne n°"NR":\  n"$0}
END ' adresse


- pour close et while pas trouvé pour l'instant

suite pour sed après

Anne