Partage
  • Partager sur Facebook
  • Partager sur Twitter

[awk] combiner awk cut et if

Sujet résolu
21 novembre 2014 à 20:15:26

Bonsoir les gens, 

J'essaye de manipuler un peu awk afin de faire un calcul mais je tombe sur un hic. 

J'ai un fichier test.txt qui contient : 

     1        1:?        1:0       0.762 
     2        1:?        2:1       0.754 
     3        1:?        2:1       0.848 
     4        1:?        1:0       1 
     5        1:?        2:1       0.851 

Dans la troisième colonne, j'essaye de récupérer le numéro après le : et en fonction de sa valeur je dois appliquer un calcul différent sur la dernière colonne. 

Si c'est un 0 alors je dois retourner la valeur de la colonne 4 en soustrayant 1.

Si c'est un 1 alors je dois retourner la valeur de la colonne 4.

J'arrive à récupérer le chiffre après le : avec la commande suivante :

awk '{print $3}' test.txt | cut -d: -f 2

Seulement je ne sais pas comment continuer. Comment dois je faire pour terminer ma commande ?

  • Partager sur Facebook
  • Partager sur Twitter
24 novembre 2014 à 11:00:21

Voilà une solution 
awk '{split($3,a,":");if(a[2]==0){$4=$4-1};print $4}' test.txt
  • Partager sur Facebook
  • Partager sur Twitter