Besoin d'aide sur AWK

Résolu
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   -  
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je dois faire un programme en AWK et j'ai quelques questions.

Peut on faire plusieurs FS?
Comment créer un dossier avec une valeur du texte
( exemple : dossier originel 1 2 3 4
dossier final j'ai mangé 4 pommes ( avec 4 car $4 ) )?
Comment avoir le nombre de lignes du dossier dans BEGIN?

Merci beaucoup pour vos réponses,
Si besoin de précisions sur les conditions, demandez

43 réponses

th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
J'ai une autre question, imaginons qu'on a deux fichiers,
fichier 1 avec 3 colonnes du style
A A1 A2
B B1 B2
etc et qu'on ai un autre fichier du style
(ce qu'on veut)A1(ce qu'on veut) appellons le A3
(ce qu'on veut)B1(ce qu'on veut) lui B3
(ce qu'on veut)B2(ce qu'on veut) lui B4
(ce qu'on veut)A2(ce qu'on veut) lui A4
je sais ou sont placés A1, A2 etc et je voudrais pouvoir faire ca
A A1 A2 A3 A4
B B1 B2 B3 B4
sachant que le deuxieme fichier est presque aleatoire, et n'a pas forcement un 3 ou un 4 par lettre...
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
plusieurs FS : -F "fs1|fs2|fs3"

nombre de lignes dans BEGIN : awk 'BEGIN{while(getline); print NR}' fichier

qu'est ce qui sépare les colonnes du 2ème fichier, des espaces ?
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
Premierement, merci pour ta reponse ,
alors non, enfait ce sont des lignes genre
1
2
3
4
5
et je veux mettre telle avec telle car telle mais elle ne sont pas forcement alignées ( car aleatoirement mises )


Deplus, sais tu comment ouvrir des dossiers mentionner dans un dossier.sh?
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
Autre question, imagions que j'ai une variable A, je voudrais y rajouter chaque premier terme de chaque ligne d'un dossier, j'ai fait :
awk -v var=$var ' { var += $1 } ' fichier.sh
Mais sans succes :/
et créer un dossier a partir d'une variable

EDIT : Sinon il faudrait concatener plusieurs fichiers avec deux facons differentes :
Ligne 1 avec Ligne 1
Expression recurrente prédefini (par un terme d'une ligne ( que je peux mettre en $1 si il faut )) avec la meme expression recurrente ( je pense qu'il faut utiliser un if, mais j'ai l'impression que l'utilisation du /$1/ ne sera pas de mise :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
pour les A1 A2, je regarde.

Deplus, sais tu comment ouvrir des dossiers mentionner dans un dossier.sh?
avec awk ? comme ça :awk '...' fichier1 fichier2 etc

pour l'adition, c'est correct mais il faut afficher la variable
$ var=3; cat a3
10
20
30
$ awk -v var=$var ' { var += $1; print var } ' a3
13
33
63
$ awk -v var=$var ' { var += $1 } END { print var } ' a3
63
$  
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
merci mais en fait ce sont des caracteres..
et a la base ma variable n'est rien du tout, en gros je veux faire une " phrase " avec mes $1 dans ma variable :)


Pour les fichiers : en fait j'ai un dossierµ.sh avec des chemins de dossiers aleatoires, faudrait les ouvrir pour recuperer certaines infos.

Sinon : merci pour ton aide et ton temps ;)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
pour ajouter du texte à une variable : var=var " " $1
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
je t'aime, ca marche parfaitement

EDIT : PS les tableaux 2d sont impossibles en awk, meme pour toi? Car c'est plus propre, mais sinon je concatene comme demandé précédement
car j'aimerai bien faire un tableau avec
var1
var2
var3
mais pour chaque var separer les caracteres par des cases ;)

Sinon le coup des plusieurs FS j'ai pas reussi, je place le -F apres awk?
je te montre ma synthaxe : awk -F ' BEGIN { FS = "x | y " } ....

PS : Pourquoi mettre des $ avant tes awk, ca change un truc?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
on peut simuler un tableau à N dimension avec : tableau[var1, var2, var3]="hello"
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
mmmh, avec des variables qui sont des listes, j'avais vu ca.

mais comment récupérer par exemple tableau[ i; j]?

Alors je n'ai plus besoin d'avoir une concatenation par expression reguliere, j'ai contourné le probleme. mais si tu sais, je dis pas non.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
mais comment récupérer par exemple tableau[ i; j]?
alors que tableau a 3 dimensions ?
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
? je n'ai pas compris,
non en fait je voudrais récuperer le ieme terme de ma jeme variable mise dans mon tableau ;)

EDIT : j'ai dit AWK mais je peux utiliser SED, BASH etc, en gros je suis sur un dossier.sh et je dois me debrouiller sans le reste
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
non en fait je voudrais récuperer le ieme terme de ma jeme variable mise dans mon tableau ;)
donne un exemple

les fichiers, comme ça ?
$ cat a1
A A1 A2
B B1 B2
$ cat a2
xx xx A1 xx appellons le A3
xx xx B1 xx lui B3
xx xx B2 xx lui B4
xx xx A2 xx lui A4 
$ awk 'ARGIND==1 {t[NR]=$0; a[$2]=b[$3]=NR; next} {n=0} a[$3] {n=a[$3]} b[$3] {n=b[$3]} n {t[n]=t[n] " " $NF} END{for(n in t)print t[n]}' a1 a2 
A A1 A2 A3 A4
B B1 B2 B3 B4
$ 
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
alors j'ai fait ce que t'as dis en remplacant a1 et a2 par le nom de mes dossier, et en ajoutant > a3 pour stocker ca dans un dossier, probleme, il est vide.. qu'ais je oublié.
De plus je n'ai pas tout compris ^^
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
comment sont séparés les champs dans ton fichier? c'est pour ca que j'ai mis des xxx <espace> , $3 ne doit pas correspondre à A1
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
ca depends, 2 fichiers a mettre ensemble n'ont qu'un seul caractere,
les autres, par espaces
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
montre le format exact des fichiers
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
malheuresement je peux pas pour deux raisons,
l'ordinateur qui les a ne peux etre connecté a internet,
je ne peux donner des informations a cause d'une charte sur la sécurité de defense ( en gros je suis dans une entreprise d'armement de defense )

du coup je peux te donner uniquement avec des ABCD/.123 :/
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
mais bon en gros ca donne :
fichier 1
A C E
A D F
B D G
fichier 2
.//blabla/blabla/E.xml
.//blabla/blabla/F.xml
.//blabla/blabla/G.xml
fichier 3
(rien)
.//blibli/blibli/EF.xml
(rien)


EDIT
mais les ABCDEF sont aléatoire ( blabla et blibli non ) et le fait qu'une ligne soit rempli ou non dans fichier 3 est aléatoire
et le nombre de ligne l'est aussi
Et le fait qu'il y ait plusieurs fois A ou D est un hasard, seul E,F,G sont different obligatoirement
0
th.deudon Messages postés 399 Date d'inscription   Statut Membre Dernière intervention   15
 
et dans ce cas il me faudrait un fichier avec
A C E .//blabla/blabla/E.xml
A D F .//blabla/blabla/F.xml .//blibli/blibli/E.xml
B D F .//blabla/blabla/F.xml

et apres, extraire les infos de .//blibli/blibli/E.xml pour les mettre a sa place


1colonne : alliance
2: type d'objet
3 : nom de l'objet ( surnom )
4: fichier contenant la localisation
5: fichier contenant le parcours
0