Trier avec awk

Fermé
Stagiaire.GSI - 16 janv. 2004 à 14:58
 nico - 19 nov. 2004 à 11:43
Bonjour à tous.

Je dispose du fichier suivant :

GenuineIntel-0
GenuineIntel-1
GenuineIntel-2
700.107-0
700.107-1
700.107-2
2048 KB-0
2048 KB-1
2048 KB-2
1386.08-0
1399.19-1
1399.19-2

Je veux obtenir ça :

XYZ GenuineIntel-0
XYZ 700.107-0
XYZ 2048 KB-0
XYZ 1386.08-0
XYZ GenuineIntel-1
XYZ 700.107-1
XYZ 2048 KB-1
XYZ 1399.19-1
XYZ GenuineIntel-2
XYZ 700.107-2
XYZ 2048 KB-2
XYZ 1399.19-2

X, Y, Z sont des valeurs égales ou supérieures à 100

Je pense qu'awk est indiqué pour ce traitement, voici ce que j'ai fait :

awk '
BEGIN {
nb_crit=5 # nombre de criteres, actuellement 5
nb_proc=6 # nombre de processeurs
x=100 # processeur
y=100 # indice
z=100 # type de materiel
}
{ for( i = 1; i <= nb_crit; i++)
{
for( j = 1; j <= nb_proc; j++)
{
printf( "%s%s%s $0\n",x,y+j,z+i )
}
}
}
' < $tmp >> $reel

Je veux donc réordonner le fichier tmp, mettre une valeur devant chaque ligne puis tout coller dans le fichier reel
... et le nombre de lignes dans reel est égal au carré des lignes dans tmp :-(

pouvez-vous m'aider ?

3 réponses

Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208
16 janv. 2004 à 16:43
Bonjour,

Je verrais plutôt une solution effectuant un stockage en séquence dans un tableau, puis édition avec ajout des clés XYZ programmée dans le bloc END.
0
merci de bien vouloir m'aider.
Lorsque Awk rencontre un champ qui contient des caractères non interprétables,il considère qu'il a atteint la fin de ligne et passe à la ligne suivante.
je perds donc tous les champs situés après celui qui contient les car bizarres.
comment faire pour dire à awk de continuer à lirela ligne?
merci
0
Salut,
je pense que ce qui pourait t'aider, c'est un truc du genre
BEGIN{FS="-"} qui va permettre de définir ton délimiteur !!!
ensuite plus de pb affiche les $2=0 puis $2=1 ..etc

nico
0