Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

Commande awk sous unix

Yann, le jeudi 25 septembre 2003 à 15:22:10 
 Signaler ce message aux modérateurs

Bonjour,

g un fichier toto.txt avec dedans :
val1
val2

je voudrais faire une boucle sur chaque ligne du fichier et affecter la valeur val1 à var1 et val2 à var2

avec : awk '{ print $1 }' toto.txt
je peux récupérer les 2 valeurs...mais pour les affecter ???

merci d'avance

1

Pitu, le jeudi 25 septembre 2003 à 19:35:49

Bonjour Yann.
Normallement, ça ne devriat pas poser trop de pb de faire ce que tu souhaites.
J'ai fait quelques essais cet après-midi, et je n'ai pas tout à fait réussi, mais je ne désespère pas te trouver une solution.
Là, j'ai pas d'unix sous la main, mais je vais essayer de trouver un peu de temps demain pour t'aider.
Par contre, est-ce que tu connais à l'avance le nombre de variables que tu auras à affecter (et leur noms), ou est-ce que les noms de tes variables doivent être calculés automatiquement ? (si oui, je risque de coincer).
A +
  (:•Þ   Pitu

Sauvez mon hamac, Bouffez Castor !

Répondre à Pitu

2

asevere, le vendredi 26 septembre 2003 à 02:19:42

Salut Pitu, salut Yann,

Comme l'a dit Pitu, si tu ne sais pas combien de variables tu as dés le départ, ca va être coton... sauf en passant par des tableaux ! :o)
Voici un petit exemple. Comme je ne sais pas si tu veut que ce soit awk qui fasse tout ou bien si tu veut passer par un script, par fleme de faire les deux, et de me replonger dans awk, je te copie-colle un script bash.
Si tu veux tout faire avec awk, ce doit etre faisable puisqu'il gére les tableaux...

[shell]# cat toto
val1
val2
val3
[shell]# cat test_toto 
#!/bin/bash
IFS=$'\n';
var=($(awk '{print $1}' toto));
#toutes les valeur sont mises dans le tableau $var

count=$(wc -l toto | tr -s ' '| cut -f2 -d\ );
i=0;
while [ $i -lt $count ]; 
do
	i=$(($i+1));
	echo "var["$i"]="${var[$(($i-1))]}; 
done;
#affichage.

[shell]# chmod +x test_toto
[shell]# ./test_toto 
var[1]=val1
var[2]=val2
var[3]=val3
[shell]# 

Tu as toute tes valeur dans le tableau $var[*] indicé de 0 à $count a toi d'en faire ce qu'il te plait :o)
@++

Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !

Répondre à asevere

3

asevere, le vendredi 26 septembre 2003 à 03:10:54
  • +1

Bon finalement j'ai jeté un oeil a awk :o)
Avec un tableau, cela donne:

awk 'BEGIN { i = 0 }; { table[i] = $1 }; { i++ }; END { i=0 }; END { for ( i in table )  print table[i]   }  ' toto

On commence par mettre i à zero,
Pour chaque passage (chaque ligne), on met $1 dans table[i] et on incremente i,
Apres le traitement de tout le fichier, on remet i à zero,
et on fini pas afficher toute les valeurs du tableau... <-- c'est la que tu peut manipuler tes donées par exemple!

@++

Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !

Répondre à asevere

4

Pitu, le vendredi 26 septembre 2003 à 08:02:27

Grrrrrr ...
J'avais dit que je regarderai aujourd'hui ...
Et toi, tu me casses la baraque. ;o)
Bon, ceci dit, j'aurais pas dit mieux.
a +

  (:•Þ   Pitu

Sauvez mon hamac, Bouffez Castor !

Répondre à Pitu

7

 asevere, le vendredi 26 septembre 2003 à 11:32:09

Salut Pitu,
Désolé, :o)

Mais je m'ennuyait vraiment terriblement hier soir! J'ai pas résisté!

@++

Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !

Répondre à asevere

5

Yann, le vendredi 26 septembre 2003 à 10:45:18

Merci à tous...en effet, je ne sais pas combien g de variables...mais avec votre aide,
g trouvé mon bonheur !!!

Merci encore

@ plus

Yann

Répondre à Yann

6

asevere, le vendredi 26 septembre 2003 à 11:30:51

De rien :o)

@++

Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !

Répondre à asevere
Commande awk Bonjour, comment on peut utiliser des variables d'un script au sein d'une commande awk ? on travaillant sur l'exemple suivant: un script qui permet de tuer tous les processus dont l'utilisation temps CPU depasse un certain seuil. le seuil est donné en... www.commentcamarche.net/forum/affich-11280851-commande-awk
Exéc. d'1 commande système UNIX ds1prog COBOL Bonjour, Je souhaitais savoir s'il existait une commande COBOL permettant d'exécuter une commande système UNIX (équivalent de la fonction 'system' du C. Merci beaucoup www.commentcamarche.net/forum/affich-240559-exec-d-1-commande-systeme-unix-ds1prog-cobol
Commande awk (Résolu) Bonjour, Je débute dans son utilisation. J'ai compris qu'il était possible de récupérer une partie d'un enregistrement d'un fichier. Est-il possible de lister l'ensemble des fichiers d'un répertoire avec cette commande. Merci. www.commentcamarche.net/forum/affich-3622045-commande-awk
[Shell] Accès aux dernières commandes de l'historiqueLe shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps. Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut. Mais il y a moyen... www.commentcamarche.net/faq/sujet-971-shell-acces-aux-dernieres-commandes-de-l-historique
[Linux] Utiliser la commande 'su'Préambule Se connecter sous un autre ID utilisateur avec "su" Démarrer un nouveau shell de connexion avec "su -" Revenir au shell précédent Suspendre le shell du compte root Notes Préambule La commande "su" (Switch User, appelée plus... www.commentcamarche.net/faq/sujet-156-linux-utiliser-la-commande-su
Comment ça marche "tar"La commande tar Archivage avec "tar" Archiver un dossier (ou répertoire) avec "tar" Désarchivage avec "tar" Désarchiver un fichier avec "tar" Désarchiver des fichiers sélectionnés avec "tar" Archivage avec "tar" La commande "tar" permet... www.commentcamarche.net/faq/sujet-155-comment-ca-marche-tar
[shell unix] fichier ligne par ligne (Résolu)Bonjour, comment faire défiler un fichier ligne par ligne, de manière à traiter chaque ligne ? Merci de votre aide www.commentcamarche.net/forum/affich-1702792-shell-unix-fichier-ligne-par-ligne
Commande AWK avec une variable (Résolu)Bonjour à tous, voilà en fait j'ai un fichier dans lequel j'ai ça par exemple : [ScriptSettings] LOCATION = "machine" LANGUAGE = "fr" TARGET_DIRECTORY = "/data/www" URL = "http://svn.machine/svn_int" TAGPATH1 = "trunk/1/3/1/" TAGPATH2 = "trunk/1/3/1/"... www.commentcamarche.net/forum/affich-7680946-commande-awk-avec-une-variable
La commande d'unixBonjour ! j'ai les questions sur les commandes d'unix et je suis débutant d'unix pouvez- vous m'aider SVP merci d'avance: 1/on peut simuler la commande loname en tapant:a)who am i>cut -cl-8 b) who am i|cut -cl-8 c)who am i www.commentcamarche.net/forum/affich-11172200-la-commande-d-unix
Commandes UNIXTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ... www.commentcamarche.net/contents/unix/unixcomm.php3
UNIX - Les fichiersIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de... www.commentcamarche.net/contents/unix/unix-fichiers.php3
Systèmes UNIX - Le shellIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système... www.commentcamarche.net/contents/unix/unix-shell.php3