Besoin d'aide sur AWK
RésoluPeut 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
Plusieurs questions portent sur AWK, notamment comment définir plusieurs séparateurs de champs, créer des dossiers ou fichiers à partir de valeurs extraites du texte et obtenir le nombre de lignes en BEGIN. Plusieurs réponses décrivent des approches pratiques: rediriger la sortie vers des fichiers ou dossiers avec des chemins issus de colonnes, maintenir des variables hors de la boucle et gérer des sorties liées aux données. D'autres échanges soulignent des difficultés comme l'usage de contenu aléatoire dans A, B, C, D, l'ouverture de dossiers mentionnés dans des scripts et les méthodes pour compter les lignes avec getline ou NR.
-
deplus mon action fait un resultat comme ca :
A
B
C
alors que je le voulais sous la forme A B C
( c'est NR == 6 { print $2 } NR == 7 { print $2 } NR == 8 { print $2 }
[ RESOLU ]
NR == 6, NR == 8 { printf $2" " }
( NR == 6, NR == 8 : pour la ligne de 6 a 8 ; printf $2" " : printf print sans mettre d'espace apres ou de saut a la ligne, du coup je printf + un espace, donc pas de saut a la ligne mais un espace )
je vais mettre la balise RESOLU et je vais refaire un topic pour une question bien précise
lien : https://forums.commentcamarche.net/forum/linux-unix-13/new#p28202984 -
ok, je pense que c'est parce que ce sont des données de localisation et qu'un fichier a les vitesse, car quand je demande de print le fichier, j'ai plus le ptit truc, j'ai 10 000 pages sur le shell....
-
tres bien, je n'ai plus que : illegal reference to variable action
j'use cette variable dans awk -
Contributeursi PARAM_VAR est une variable:
action=$(awk ' BEGIN{"mes FS"} {print$2} ' <<<"$PARAM_VAR") -
j'ai le message suivant : cannot open PARAM_VAR,
illegal reference to variable action -
Contributeuril 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 -
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? -
Contributeurremplacer X Y Z dans ces balises?
<Blu>X</Blu>
<bly>Y</bly>
<ble>Z</ble> -
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 -
Contributeurj'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:$ seq 1 10 > a3 $ wc -l a3 10 a3 $ awk 'BEGIN{while(getline); print NR}' a3 10 $que répond wc -l fichier ? -
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... -
Contributeur
$ 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 $
-
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 -
Contributeurécrire ces 5 variables dans un fichier en 5 colonnes?
plutot que des variables multiples, on peut utiliser un tableau -
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 )
-
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 -
Contributeurun print de quel ensemble ?
un fichier dans une variable en bash:var=$(<fichier); echo "$var"
-
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 = -
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 -
Contributeursi des fichiers viennent de Windows, attention aux ^M en fin de lignes
- 1
- 2
- 3