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
le format ce n'est pas le contenu, voici pour les 2 premiers fichiers, mais je n'ai pas compris le rôle du 3ème
$ cat a11 a22 A C E A D F B D G .//blabla/blabla/E.xml .//blabla/blabla/F.xml .//blabla/blabla/G.xml $ awk 'ARGIND==1 {a[$3]=$0; next} {x=$0; FS="/."; $0=x; n=$(NF-1); a[n]=a[n] " " $0} END{for(n in a)print a[n]}' a11 a22 A C E .//blabla/blabla/E.xml A D F .//blabla/blabla/F.xml B D G .//blabla/blabla/G.xml $
ah, ok, ben c'est des dossier .sh sur ubuntu sous la forme ci dessus
mmmh, ca m'a mis l'un sur l'autre, j'ai
.//blabla/blabla/E.xml .//blabla/blabla/f.xml .//blabla/blabla/g.xml
A C E
A D F
B D G
comme retour... :(
mmmh, ca m'a mis l'un sur l'autre, j'ai
.//blabla/blabla/E.xml .//blabla/blabla/f.xml .//blabla/blabla/g.xml
A C E
A D F
B D G
comme retour... :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut dubcek,
il ne me semble pas qu'ils soient originaire de windows
EDIT : petit soucis, mes variables n'ont pas de valeurs hors de la boucle awk... je pense que ca marchait avant en gros si j'ai un print dans awk' ', ca marche, sinon j'ai rien
il ne me semble pas qu'ils soient originaire de windows
EDIT : petit soucis, mes variables n'ont pas de valeurs hors de la boucle awk... je pense que ca marchait avant en gros si j'ai un print dans awk' ', ca marche, sinon j'ai rien
Sinon, comment faire un print de l'ensemble en gardant les lignes vides?
Et associer une variable a tout ce que contient un fichier? pas forcement en awk.
Désolé pour toutes ces questions mais j'ai rien trouvé sur internet de concret/ expliqué, du coup j'espere faire un topic claire pour ceux qui nous lirons
Pour ceux qui se demande comment faire pour la variable :
variable=$(awk '.........' fichier )
Ca donne a la variable ce qu'affiche awk, donc faut du print, pas d'espace avant et apres le =
Et associer une variable a tout ce que contient un fichier? pas forcement en awk.
Désolé pour toutes ces questions mais j'ai rien trouvé sur internet de concret/ expliqué, du coup j'espere faire un topic claire pour ceux qui nous lirons
Pour ceux qui se demande comment faire pour la variable :
variable=$(awk '.........' fichier )
Ca donne a la variable ce qu'affiche awk, donc faut du print, pas d'espace avant et apres le =
en fait c'est l'ensemble des lignes du fichier ( les lignes vides comprises )
je me suis fait recaler ^^ permission denied
sinon quand je fais
variable=$(awk '.........' fichier ) , le fichier etant un fichier du type "fichier 3", il me dit,
.//blibli/blibli/EF.xml. No such file or directory
En gros mon truc marche mais pas quand c'est des liens de fichiers j'ai l'impression
Miracle, ca marche je ne sais comment, sans rien avoir toucher, je confirme que variable=$(awk ' { print $0 } fichier ) marche
je me suis fait recaler ^^ permission denied
sinon quand je fais
variable=$(awk '.........' fichier ) , le fichier etant un fichier du type "fichier 3", il me dit,
.//blibli/blibli/EF.xml. No such file or directory
En gros mon truc marche mais pas quand c'est des liens de fichiers j'ai l'impression
Miracle, ca marche je ne sais comment, sans rien avoir toucher, je confirme que variable=$(awk ' { print $0 } fichier ) marche
Donc en gros j'ai reussi a faire 5 variables ( une pour chaque colonne ) , j'aimerai faire un dossier qui contient ces 5 variables ( donc sur 5 colonnes )
écrire ces 5 variables dans un fichier en 5 colonnes?
plutot que des variables multiples, on peut utiliser un tableau
plutot que des variables multiples, on peut utiliser un tableau
moi je te suis ^^
Mais avoir un fichier comme demandé, ca serait le mieux ( plus facile pour la suite )
j'ai 5 variable ( en colonne ) et je voudrais les concaténer pour en faire 5 colonnes
Mais avoir un fichier comme demandé, ca serait le mieux ( plus facile pour la suite )
j'ai 5 variable ( en colonne ) et je voudrais les concaténer pour en faire 5 colonnes
$ echo "$aa" 1 2 3 4 $ echo "$ab" a b c d $ echo "$ac" A B C D $ paste -d ' ' <(echo "$aa") <(echo "$ab") <(echo "$ac") 1 a A 2 b B 3 c C 4 d D $
C'est parfait, merci,( pour le mettre dans un dossier faire > dossier )
Bon, deja je sais faire ca, merci beaucoup, maintenant, sais tu comment je pourrais faire :
recuperrer des données contenue dans un dossier dont le parcours est le terme A,B,C,D et les remplacer par A,B,C,D, je sais ou elle se trouve dans les dossier ( toujours au memes endroit ) , si t'as besoin de l'endroit, je suis a ta disposition, en tout cas merci, dommage que ce soit des coms sinon je t'aurais mis des +1 ;)
deplus je veux faire
il y a " temps de ligne " en begin, du coup j'ai fait
BEGIN {
{print" il y a"} {while(getline); print NR}
}
ca marche mais mon chiffre est a la ligne du dessous
et ca empeche les actions de ligne de se faire...
Bon, deja je sais faire ca, merci beaucoup, maintenant, sais tu comment je pourrais faire :
recuperrer des données contenue dans un dossier dont le parcours est le terme A,B,C,D et les remplacer par A,B,C,D, je sais ou elle se trouve dans les dossier ( toujours au memes endroit ) , si t'as besoin de l'endroit, je suis a ta disposition, en tout cas merci, dommage que ce soit des coms sinon je t'aurais mis des +1 ;)
deplus je veux faire
il y a " temps de ligne " en begin, du coup j'ai fait
BEGIN {
{print" il y a"} {while(getline); print NR}
}
ca marche mais mon chiffre est a la ligne du dessous
et ca empeche les actions de ligne de se faire...
j'ai pas compris : recuperrer des données ........... A,B,C,D et les remplacer par A,B,C,D,
dossier veut dire fichier ou répertoire ?
le while(getline) est pourtant correct:
dossier veut dire fichier ou répertoire ?
le while(getline) est pourtant correct:
$ seq 1 10 > a3 $ wc -l a3 10 a3 $ awk 'BEGIN{while(getline); print NR}' a3 10 $que répond wc -l fichier ?
en fait j'ai plus besoin du while get line, j'ai fait un dossier comprennant le nombre de ligne uniquement, j'ai fait un dossier grace a cette information, et je concatene avec les informations contenues dans des lignes
alors, en gros A = .//blabla/blabla/E.xml
dans .//blabla/blabla/E.xml j'ai par exemple :
<bla>
<bli>
<blo>
<Blu>X</Blu>
<bly>Y</bly>
<ble>Z</ble>
</blo>
</bli>
</bla>
et je veux que dans mon dossier au lieu de A j'ai X Y Z
alors, en gros A = .//blabla/blabla/E.xml
dans .//blabla/blabla/E.xml j'ai par exemple :
<bla>
<bli>
<blo>
<Blu>X</Blu>
<bly>Y</bly>
<ble>Z</ble>
</blo>
</bli>
</bla>
et je veux que dans mon dossier au lieu de A j'ai X Y Z
non, prendre ces données, et les mettre dans le fichier fait par les contenance a ligne de leur chemin ^^
en gros j'avais comme idée :
faire une boucle de variable, qui pour chaque ligne du fichier d'origine contenant les lien ( fichier 2 )
la ligne 1 serait egale a var1 ... etc
et apres je fait une variable de procedure awk qui va retirer les valeurs voulues dans une variable var11 disons, puis var22 ... et enfin concatener avec une boucle ( car je ne sais pas combien il y en a )
je vais le faire comme ca
action=$(awk ' BEGIN{"mes FS"} {print$2} ' PARAM_VAR) j'ai trouvé ca dans internet, mais comment l'utiliser?
en faisant action$1 par exemple? sinon, que mettre a la place de PARAM_VAR?
en gros j'avais comme idée :
faire une boucle de variable, qui pour chaque ligne du fichier d'origine contenant les lien ( fichier 2 )
la ligne 1 serait egale a var1 ... etc
et apres je fait une variable de procedure awk qui va retirer les valeurs voulues dans une variable var11 disons, puis var22 ... et enfin concatener avec une boucle ( car je ne sais pas combien il y en a )
je vais le faire comme ca
action=$(awk ' BEGIN{"mes FS"} {print$2} ' PARAM_VAR) j'ai trouvé ca dans internet, mais comment l'utiliser?
en faisant action$1 par exemple? sinon, que mettre a la place de PARAM_VAR?
il faut utiliser un tableau
$ var[0]=3615; var[1]="hahaha" ; var[2]=3.14 ; var[3]="xxx" $ i=2 ; echo ${var[$i]} 3.14 $ echo ${#var[@]} # taille du tableau 4 $ echo ${var[@]} # contenu du tableau 3615 hahaha 3.14 xxx