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 -
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
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
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...
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...
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 ?
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 ?
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?
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?
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 :/
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 :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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 $
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 ;)
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 ;)
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?
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?
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.
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.
? 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
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
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 ?
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 $
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 ^^
De plus je n'ai pas tout compris ^^
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
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 :/
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 :/
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
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
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
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