Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1562 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Awk sous windows (cygwin)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Awk sous windows (cygwin)

n°1608993
chameau59
Posté le 06-09-2007 à 17:09:38  profilanswer
 

Bonjour,
 
pour les besoins d'un script je dois inserer des ":" dans une colone d'un fichier texte.
 
sous unix j'utilise la commande :
 

Code :
  1. awk '{print $1 " " $2 " " $3 " " $4 " " substr($5,1,2)":"substr($5,3,2) " " $6 " " substr($7,1,2)":"substr($7,3,2)}'


 
qui marche bien sous aix mais voila je dois le faire sur un serveur windows sur lequel cygwin est installé et je n'arrive pas à trouver a commande qui va bien... il a du mal avec les ":" dans le substr....
 
merci de votre aide

mood
Publicité
Posté le 06-09-2007 à 17:09:38  profilanswer
 

n°1610092
chameau59
Posté le 10-09-2007 à 14:21:48  profilanswer
 

Bonjour,
 
j'ai contourner le problème mais la je bloque sur un autre souci,
A l'aide du awk j'ai formater un fichier de la manière suivante  :
 
xxxxx   xxxxxx   xxxxxx   xxxxxxx   156
xxxxx   xxxxxx   xxxxxx   xxxxxxx   -35
xxxxx   xxxxxx   xxxxxx   xxxxxxx   0
xxxxx   xxxxxx   xxxxxx   xxxxxxx   0
xxxxx   xxxxxx   xxxxxx   xxxxxxx   100
xxxxx   xxxxxx   xxxxxx   xxxxxxx   -25
xxxxx   xxxxxx   xxxxxx   xxxxxxx   12
   
 
Est je désire remplacer chaque valeur négative par cette meme valeur à laquelle on rajouterai 1440
Je debute en Dos et je vous remercie de votre aide.

n°1610131
chameau59
Posté le 10-09-2007 à 15:54:10  profilanswer
 

un coup de main svp

n°1610399
aigles
Posté le 10-09-2007 à 22:58:03  profilanswer
 

Tu peux ajouter ce qui suit à ton code awk :

  if ($5 <0) $5 += 1440;


 
Jean-Pierre.

n°1610572
chameau59
Posté le 11-09-2007 à 12:02:32  profilanswer
 

bonjour,
 
peut tu préciser la commande (n'oublie pas que cest du DOS)
 
awk "{print $1,$2,$3,$4,$5,$6,if ($5 <0) $5 += 1440}" fic2.tmp
 
awk: cmd. line:1: {print $1,$2,$3,$4,$5,$6,if ($5 <0) $5 += 1440}
awk: cmd. line:1:                          ^ parse error
awk: cmd. line:1: {print $1,$2,$3,$4,$5,$6,if ($5 <0) $5 += 1440}
awk: cmd. line:1:                                        ^ parse error

n°1611901
aigles
Posté le 15-09-2007 à 15:03:13  profilanswer
 

chameau59 a écrit :

bonjour,
 
peut tu préciser la commande (n'oublie pas que cest du DOS)
 
awk "{print $1,$2,$3,$4,$5,$6,if ($5 <0) $5 += 1440}" fic2.tmp
 
awk: cmd. line:1: {print $1,$2,$3,$4,$5,$6,if ($5 <0) $5 += 1440}
awk: cmd. line:1:                          ^ parse error
awk: cmd. line:1: {print $1,$2,$3,$4,$5,$6,if ($5 <0) $5 += 1440}
awk: cmd. line:1:                                        ^ parse error


Deux possibilités :
1) Tu modifie la champ avant de faire le print :

awk "{if ($5 <0) $5 += 1440;print $1,$2,$3,$4,$5,$6}" fic2.tmp


2) Tu effectue un test au niveau du print :

awk "{print $1,$2,$3,$4,($5<0 ? $5+1440 : $5),$6}" fic2.tmp


 
Jean-Pierre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Awk sous windows (cygwin)

 

Sujets relatifs
Message WindowsCréer un service windows en c++
pop-up flash sans fenetre windowsGawk : quote refusé sous Windows
Capitaliser la sélection (environnement Windows)portage d'un driver windows en qnx besoin d'aide urgent
Aperçu des images et photocopies Windowscompilation sous vista 64 d'un exe pour windows XP
portabilité Linux<->Windows : séparateur des chemins de fichiersCompilation 64-bit avec gcc sous Windows
Plus de sujets relatifs à : Awk sous windows (cygwin)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR